diff options
author | Reid Kleckner <rnk@google.com> | 2015-10-12 19:43:34 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2015-10-12 19:43:34 +0000 |
commit | 4a5f35c0aec040614e01f70c988b557641542fdb (patch) | |
tree | 6c5b7560df2b8d82cf4a8b10e094ff4866008762 /llvm/lib/Target/X86 | |
parent | c848b321fd68ddde1c08fefa07d3a9cdbdf6454d (diff) | |
download | bcm5719-llvm-4a5f35c0aec040614e01f70c988b557641542fdb.tar.gz bcm5719-llvm-4a5f35c0aec040614e01f70c988b557641542fdb.zip |
Make Win64 localescape offsets FP relative instead of SP relative
We made them SP relative back in March (r233137) because that's the
value the runtime passes to EH functions. With the new cleanuppad IR,
funclets adjust their frame argument from SP to FP, so our offsets
should now be FP-relative.
llvm-svn: 250088
Diffstat (limited to 'llvm/lib/Target/X86')
-rw-r--r-- | llvm/lib/Target/X86/X86RegisterInfo.cpp | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/llvm/lib/Target/X86/X86RegisterInfo.cpp b/llvm/lib/Target/X86/X86RegisterInfo.cpp index 8531538001d..b1147877753 100644 --- a/llvm/lib/Target/X86/X86RegisterInfo.cpp +++ b/llvm/lib/Target/X86/X86RegisterInfo.cpp @@ -518,16 +518,11 @@ X86RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II, // offset is from the traditional base pointer location. On 64-bit, the // offset is from the SP at the end of the prologue, not the FP location. This // matches the behavior of llvm.frameaddress. + unsigned IgnoredFrameReg; if (Opc == TargetOpcode::LOCAL_ESCAPE) { MachineOperand &FI = MI.getOperand(FIOperandNum); - bool IsWinEH = MF.getTarget().getMCAsmInfo()->usesWindowsCFI(); int Offset; - unsigned IgnoredFrameReg; - if (IsWinEH) - Offset = - TFI->getFrameIndexReferenceFromSP(MF, FrameIndex, IgnoredFrameReg); - else - Offset = TFI->getFrameIndexReference(MF, FrameIndex, IgnoredFrameReg); + Offset = TFI->getFrameIndexReference(MF, FrameIndex, IgnoredFrameReg); FI.ChangeToImmediate(Offset); return; } @@ -544,7 +539,6 @@ X86RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II, // Now add the frame object offset to the offset from EBP. int FIOffset; - unsigned IgnoredFrameReg; if (AfterFPPop) { // Tail call jmp happens after FP is popped. const MachineFrameInfo *MFI = MF.getFrameInfo(); |