Correctly constrain a register class when computing frame offsets, as the Thumb2
[oota-llvm.git] / lib / Target / ARM / ARMBaseRegisterInfo.cpp
index ea1f08a7da8d4889553af53808585a3d90f9a3a3..9a18a961aaa638e62083e9d7c7ac9f4462bd684c 100644 (file)
@@ -1111,6 +1111,10 @@ materializeFrameBaseRegister(MachineBasicBlock *MBB,
   if (Ins != MBB->end())
     DL = Ins->getDebugLoc();
 
+  const TargetInstrDesc &TID = TII.get(ADDriOpc);
+  MachineRegisterInfo &MRI = MBB->getParent()->getRegInfo();
+  MRI.constrainRegClass(BaseReg, TID.OpInfo[0].getRegClass(this));
+
   MachineInstrBuilder MIB =
     BuildMI(*MBB, Ins, DL, TII.get(ADDriOpc), BaseReg)
     .addFrameIndex(FrameIdx).addImm(Offset);