Always adjust the stack pointer immediately after the call.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 29 Jun 2011 23:11:39 +0000 (23:11 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 29 Jun 2011 23:11:39 +0000 (23:11 +0000)
commit6531bddb86149b7e5c888fc9209456356b9361c6
tree5ff31b037d237a5faa96376bcd5a34626a849e58
parentcc359d9fa28a871b18d93da76fd9cf516499e39f
Always adjust the stack pointer immediately after the call.

Some x86-32 calls pop values off the stack, and we need to readjust the
stack pointer after the call. This happens when ADJCALLSTACKUP is
eliminated.

It could happen that spill code was inserted between the CALL and
ADJCALLSTACKUP instructions, and we would compute wrong stack pointer
offsets for those frame index references.

Fix this by inserting the stack pointer adjustment immediately after the
call instead of where the ADJCALLSTACKUP instruction was erased.

I don't have a test case since we don't currently insert code in that
position. We will soon, though. I am testing a regalloc patch that
didn't work on Linux because of this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134113 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86RegisterInfo.cpp