Move the complex address expression out of DIVariable and into an extra
[oota-llvm.git] / lib / CodeGen / MachineInstr.cpp
index 493f5ee0977fac80c2ca1acf69046880dbf63a6f..d33d4a9d26aff1054ef255adf11cdeb031f9879f 100644 (file)
@@ -1643,8 +1643,11 @@ void MachineInstr::print(raw_ostream &OS, const TargetMachine *TM,
     if (isDebugValue() && MO.isMetadata()) {
       // Pretty print DBG_VALUE instructions.
       const MDNode *MD = MO.getMetadata();
-      if (const MDString *MDS = dyn_cast<MDString>(MD->getOperand(2)))
-        OS << "!\"" << MDS->getString() << '\"';
+      if (MD->getNumOperands() >= 2)
+        if (const MDString *MDS = dyn_cast<MDString>(MD->getOperand(2)))
+          OS << "!\"" << MDS->getString() << '\"';
+        else
+          MO.print(OS, TM);
       else
         MO.print(OS, TM);
     } else if (TM && (isInsertSubreg() || isRegSequence()) && MO.isImm()) {
@@ -1747,6 +1750,8 @@ void MachineInstr::print(raw_ostream &OS, const TargetMachine *TM,
         OS << " ]";
       }
     }
+    if (isIndirectDebugValue())
+      OS << " indirect";
   } else if (!debugLoc.isUnknown() && MF) {
     if (!HaveSemi) OS << ";";
     OS << " dbg:";