Revert "Convert liveness tracking to work on a sub-register level instead of just...
[oota-llvm.git] / lib / CodeGen / PrologEpilogInserter.cpp
index b0e494ffcdc084ee827eda88e0c30e3d695fd184..0107a9cb442c3d8cf6f67c86d47e8c8ac71e5ffc 100644 (file)
@@ -731,15 +731,18 @@ void PEI::replaceFrameIndices(MachineBasicBlock *BB, MachineFunction &Fn,
       // Frame indicies in debug values are encoded in a target independent
       // way with simply the frame index and offset rather than any
       // target-specific addressing mode.
-      if (MI->isDebugValue()) {
-        assert(i == 0 && "Frame indicies can only appear as the first "
-                         "operand of a DBG_VALUE machine instruction");
+      if (MI->isDebugValue() ||
+          MI->getOpcode() == TargetOpcode::STACKMAP ||
+          MI->getOpcode() == TargetOpcode::PATCHPOINT) {
+        assert((!MI->isDebugValue() || i == 0) &&
+               "Frame indicies can only appear as the first operand of a "
+               "DBG_VALUE machine instruction");
         unsigned Reg;
-        MachineOperand &Offset = MI->getOperand(1);
+        MachineOperand &Offset = MI->getOperand(i + 1);
         Offset.setImm(Offset.getImm() +
                       TFI->getFrameIndexReference(
-                          Fn, MI->getOperand(0).getIndex(), Reg));
-        MI->getOperand(0).ChangeToRegister(Reg, false /*isDef*/);
+                          Fn, MI->getOperand(i).getIndex(), Reg));
+        MI->getOperand(i).ChangeToRegister(Reg, false /*isDef*/);
         continue;
       }