Cleanup stack/frame register define/kill states. This fixes two bugs:
authorHal Finkel <hfinkel@anl.gov>
Fri, 30 Dec 2011 00:34:00 +0000 (00:34 +0000)
committerHal Finkel <hfinkel@anl.gov>
Fri, 30 Dec 2011 00:34:00 +0000 (00:34 +0000)
commit2e95afa04cd1c89de7e4abaeead66cd8e51ec929
tree9d3c5d3643df8e1a13804999ee6170ce76241bff
parented23bdb65fe86cdb7a38c8c1998ec965e6973966
Cleanup stack/frame register define/kill states. This fixes two bugs:

1. The ST*UX instructions that store and update the stack pointer did not set define/kill on R1. This became a problem when I activated post-RA scheduling (and had incorrectly adjusted the Frames-large test).

2. eliminateFrameIndex did not kill its scavenged temporary register, and this could cause the scavenger to exhaust all available registers (and its emergency spill slot) when there were a lot of CR values to spill. The 2010-02-12-saveCR test has been adjusted to check for this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147359 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/PowerPC/PPCFrameLowering.cpp
lib/Target/PowerPC/PPCRegisterInfo.cpp
test/CodeGen/PowerPC/2010-02-12-saveCR.ll
test/CodeGen/PowerPC/Frames-large.ll