diff options
author | Nico Rieck <nico.rieck@gmail.com> | 2013-07-08 01:30:57 +0000 |
---|---|---|
committer | Nico Rieck <nico.rieck@gmail.com> | 2013-07-08 01:30:57 +0000 |
commit | d56e7e198d858439c884dbd909ee58d15742d5be (patch) | |
tree | c35a40502ab63ec76efa049cb5861c53037a2dad /lib/Target/X86/X86FrameLowering.cpp | |
parent | 155615d7dc4e4fbfd3b7273720a76356468edf46 (diff) | |
download | llvm-d56e7e198d858439c884dbd909ee58d15742d5be.tar.gz llvm-d56e7e198d858439c884dbd909ee58d15742d5be.tar.bz2 llvm-d56e7e198d858439c884dbd909ee58d15742d5be.tar.xz |
Revert "Reuse %rax after calling __chkstk on win64"
This reverts commit 01f8d579f7672872324208ac5bc4ac311e81b22e.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185781 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86FrameLowering.cpp')
-rw-r--r-- | lib/Target/X86/X86FrameLowering.cpp | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/lib/Target/X86/X86FrameLowering.cpp b/lib/Target/X86/X86FrameLowering.cpp index 5db431b60a..9d66bfd88a 100644 --- a/lib/Target/X86/X86FrameLowering.cpp +++ b/lib/Target/X86/X86FrameLowering.cpp @@ -914,14 +914,11 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF) const { .addReg(X86::EFLAGS, RegState::Define | RegState::Implicit) .setMIFlag(MachineInstr::FrameSetup); - // MSVC x64's __chkstk does not adjust %rsp itself. - // It also does not clobber %rax so we can reuse it when adjusting %rsp. - if (isSPUpdateNeeded) { - BuildMI(MBB, MBBI, DL, TII.get(X86::SUB64rr), StackPtr) - .addReg(StackPtr) - .addReg(X86::RAX) - .setMIFlag(MachineInstr::FrameSetup); - } + // MSVC x64's __chkstk needs to adjust %rsp. + // FIXME: %rax preserves the offset and should be available. + if (isSPUpdateNeeded) + emitSPUpdate(MBB, MBBI, StackPtr, -(int64_t)NumBytes, Is64Bit, IsLP64, + UseLEA, TII, *RegInfo); if (isEAXAlive) { // Restore EAX |