AArch64: Use a callee save registers for swiftself parameters
authorMatthias Braun <matze@braunis.de>
Wed, 13 Apr 2016 21:43:16 +0000 (21:43 +0000)
committerMatthias Braun <matze@braunis.de>
Wed, 13 Apr 2016 21:43:16 +0000 (21:43 +0000)
commit74a0bd319ad9a6bca95684d4c87851e4583725e9
treec9ead54fd5427204fba0dff817df736c0a289eca
parentb10e8932737b4e5cc5669298097bdcf30c492332
AArch64: Use a callee save registers for swiftself parameters

It is very likely that the swiftself parameter is alive throughout most
functions function so putting it into a callee save register should
avoid spills for the callers with only a minimum amount of extra spills
in the callees.

Currently the generated code is correct but unnecessarily spills and
reloads arguments passed in callee save registers, I will address this
in upcoming patches.

This also adds a missing check that for tail calls the preserved value
of the caller must be the same as the callees parameter.

Differential Revision: http://reviews.llvm.org/D19007

llvm-svn: 266251
llvm/lib/Target/AArch64/AArch64CallingConvention.td
llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/test/CodeGen/AArch64/swiftself.ll