ARM: Use a callee save register for the swiftself parameter.
authorMatthias Braun <matze@braunis.de>
Wed, 13 Apr 2016 21:43:25 +0000 (21:43 +0000)
committerMatthias Braun <matze@braunis.de>
Wed, 13 Apr 2016 21:43:25 +0000 (21:43 +0000)
commit707e02c273f6a0286d023e4ecdac4a4ce0b84038
tree3aa4d65b1585b29330abfb74128cc4f1cffb6ec4
parent588d1cdad486dcddd8fe410bdc6e7080c1cfdbdd
ARM: Use a callee save register for the swiftself parameter.

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/D18901

llvm-svn: 266253
llvm/lib/Target/ARM/ARMCallingConv.td
llvm/lib/Target/ARM/ARMFrameLowering.cpp
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/test/CodeGen/ARM/swiftself.ll