[llvm-commits] [llvm] r136065 - /llvm/trunk/lib/Target/X86/X86FrameLowering.cpp
Bill Wendling
isanbard at gmail.com
Tue Jul 26 01:03:50 PDT 2011
Author: void
Date: Tue Jul 26 03:03:49 2011
New Revision: 136065
URL: http://llvm.org/viewvc/llvm-project?rev=136065&view=rev
Log:
The compact unwinding offsets are divided by 8 on 64-bit machines.
Modified:
llvm/trunk/lib/Target/X86/X86FrameLowering.cpp
Modified: llvm/trunk/lib/Target/X86/X86FrameLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86FrameLowering.cpp?rev=136065&r1=136064&r2=136065&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86FrameLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86FrameLowering.cpp Tue Jul 26 03:03:49 2011
@@ -490,6 +490,8 @@
unsigned SubtractInstr = getSUBriOpcode(Is64Bit, -TailCallReturnAddrDelta);
unsigned SubtractInstrIdx = (Is64Bit ? 3 : 2);
+ unsigned StackDivide = (Is64Bit ? 8 : 4);
+
unsigned InstrOffset = 0;
unsigned CFAOffset = 0;
unsigned StackAdjust = 0;
@@ -536,7 +538,7 @@
// %RSP<def> = SUB64ri8 %RSP, 48
return 0;
- StackAdjust = MI.getOperand(2).getImm() / 4;
+ StackAdjust = MI.getOperand(2).getImm() / StackDivide;
SubtractInstrIdx += InstrOffset;
ExpectEnd = true;
}
@@ -544,7 +546,7 @@
// Encode that we are using EBP/RBP as the frame pointer.
uint32_t CompactUnwindEncoding = 0;
- CFAOffset /= 4;
+ CFAOffset /= StackDivide;
if (HasFP) {
if ((CFAOffset & 0xFF) != CFAOffset)
// Offset was too big for compact encoding.
More information about the llvm-commits
mailing list