Allocate the RS spill slot for any PPC function with spills and a large stack frame
authorHal Finkel <hfinkel@anl.gov>
Fri, 15 Mar 2013 05:06:04 +0000 (05:06 +0000)
committerHal Finkel <hfinkel@anl.gov>
Fri, 15 Mar 2013 05:06:04 +0000 (05:06 +0000)
commitbb420f10e98e1ce469d1e767fee797bb9b5ef2c1
tree951ae6dbb88da4d63926b2eb8a1cfc88f880587b
parentcb7733c33c8bd2c24f43967447f6e739fb768c7b
Allocate the RS spill slot for any PPC function with spills and a large stack frame

For spills into a large stack frame, the FI-elimination code uses the register
scavenger to obtain a free GPR for use with an r+r-addressed load or store.
When there are no available GPRs, the scavenger gets one by using its spill
slot. Previously, we were not always allocating that spill slot and the RS
would assert when the spill slot was needed.

I don't currently have a small test that triggered the assert, but I've
created a small regression test that verifies that the spill slot is now
added when the stack frame is sufficiently large.

llvm-svn: 177140
llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
llvm/lib/Target/PowerPC/PPCFrameLowering.h
llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.h
llvm/test/CodeGen/PowerPC/2010-02-12-saveCR.ll
llvm/test/CodeGen/PowerPC/frame-size.ll [new file with mode: 0644]