Simplify ARM callee-saved register handling by removing the distinction
authorJim Grosbach <grosbach@apple.com>
Mon, 20 Sep 2010 19:32:20 +0000 (19:32 +0000)
committerJim Grosbach <grosbach@apple.com>
Mon, 20 Sep 2010 19:32:20 +0000 (19:32 +0000)
commit1dc335a79f5e899aacc6710dfe08ef20abb6a6c0
tree2a952221adb0cbe9554337d02f93d4e0cb3712ce
parent43779dcfef7f4e921c6fc12bb5394a1b2efcd81d
Simplify ARM callee-saved register handling by removing the distinction
between the high and low registers for prologue/epilogue code. This was
a Darwin-only thing that wasn't providing a realistic benefit anymore.
Combining the save areas simplifies the compiler code and results in better
ARM/Thumb2 codegen.

For example, previously we would generate code like:
        push    {r4, r5, r6, r7, lr}
        add     r7, sp, #12
        stmdb   sp!, {r8, r10, r11}
With this change, we combine the register saves and generate:
        push    {r4, r5, r6, r7, r8, r10, r11, lr}
        add     r7, sp, #12

rdar://8445635

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114340 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMBaseRegisterInfo.cpp
lib/Target/ARM/ARMMachineFunctionInfo.h
lib/Target/ARM/Thumb1RegisterInfo.cpp
test/CodeGen/ARM/lsr-code-insertion.ll
test/CodeGen/Thumb2/2010-06-21-TailMergeBug.ll