Do not lose the offset from teh global when peephole optimizing instructions.
authorChris Lattner <sabre@nondot.org>
Wed, 12 Jan 2005 05:17:28 +0000 (05:17 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 12 Jan 2005 05:17:28 +0000 (05:17 +0000)
This fixes FreeBench/pcompress

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19507 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86PeepholeOpt.cpp

index 9d02cbd69a906688c46700e083f10abf3280bd9a..8baf5d214c4a35509f0240f0d90ff7d2adf1f355 100644 (file)
@@ -198,9 +198,11 @@ bool PH::PeepholeOptimize(MachineBasicBlock &MBB,
                          addReg(R1).addSImm(Offset).addZImm((char)Val));
         } else if (MI->getOperand(3).isGlobalAddress()) {
           GlobalValue *GA = MI->getOperand(3).getGlobal();
+          int Offset = MI->getOperand(3).getOffset();
           I = MBB.insert(MBB.erase(I),
                          BuildMI(Opcode, 5).addReg(R0).addZImm(Scale).
-                         addReg(R1).addGlobalAddress(GA).addZImm((char)Val));
+                         addReg(R1).addGlobalAddress(GA, false, Offset).
+                         addZImm((char)Val));
         }
         return true;
       }