Don't abort if a MemOperand is missing a SourceValue; just print it
authorDan Gohman <gohman@apple.com>
Thu, 7 Feb 2008 16:18:00 +0000 (16:18 +0000)
committerDan Gohman <gohman@apple.com>
Thu, 7 Feb 2008 16:18:00 +0000 (16:18 +0000)
as <unknown>. And make some minor adjustments to the MemOperand
dump format.

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

lib/CodeGen/MachineInstr.cpp

index c455b024e3f14ce993ead2b34d6db6c5100601ad..6d4bc30150a12f6806062cc3f314f1bc7f5c8588 100644 (file)
@@ -631,30 +631,34 @@ void MachineInstr::print(std::ostream &OS, const TargetMachine *TM) const {
   }
 
   if (getNumMemOperands() > 0) {
-    OS << ", SV:";
+    OS << ", Mem:";
     for (unsigned i = 0; i < getNumMemOperands(); i++) {
       const MemOperand &MRO = getMemOperand(i);
       const Value *V = MRO.getValue();
 
-      assert(V && "SV missing.");
       assert((MRO.isLoad() || MRO.isStore()) &&
              "SV has to be a load, store or both.");
       
       if (MRO.isVolatile())
         OS << "Volatile ";
+
       if (MRO.isLoad())
-        OS << "LD ";
+        OS << "LD";
       if (MRO.isStore())
-        OS << "ST ";
+        OS << "ST";
         
-      OS  << MRO.getSize();
+      OS << "(" << MRO.getSize() << ") [";
       
-      if (!V->getName().empty())
-        OS << "[" << V->getName() << " + " << MRO.getOffset() << "]";
+      if (!V)
+        OS << "<unknown>";
+      else if (!V->getName().empty())
+        OS << V->getName();
       else if (isa<PseudoSourceValue>(V))
-        OS << "[" << *V << " + " << MRO.getOffset() << "]";
+        OS << *V;
       else
-        OS << "[" << V << " + " << MRO.getOffset() << "]";
+        OS << V;
+
+      OS << " + " << MRO.getOffset() << "]";
     }
   }