X86 address displacement field must be interpreted as a 32-bit value.
authorEvan Cheng <evan.cheng@apple.com>
Fri, 26 Sep 2008 16:58:16 +0000 (16:58 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Fri, 26 Sep 2008 16:58:16 +0000 (16:58 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56665 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86RegisterInfo.cpp

index e86c6be0dd389fcbf39844b814b084522092c092..49766a8fc74863d12bb73ad434cc2ee8ce300de1 100644 (file)
@@ -427,9 +427,10 @@ void X86RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
   // FrameIndex with base register with EBP.  Add an offset to the offset.
   MI.getOperand(i).ChangeToRegister(BasePtr, false);
 
-  // Now add the frame object offset to the offset from EBP.
-  int64_t Offset = getFrameIndexOffset(MF, FrameIndex) +
-                   MI.getOperand(i+3).getImm();
+  // Now add the frame object offset to the offset from EBP. Offset is a
+  // 32-bit integer.
+  int Offset = getFrameIndexOffset(MF, FrameIndex) +
+    (int)(MI.getOperand(i+3).getImm());
 
   MI.getOperand(i+3).ChangeToImmediate(Offset);
 }