Debug printing for SUnits that carry MachineInstrs.
authorDan Gohman <gohman@apple.com>
Fri, 14 Nov 2008 00:28:56 +0000 (00:28 +0000)
committerDan Gohman <gohman@apple.com>
Fri, 14 Nov 2008 00:28:56 +0000 (00:28 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59279 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp

index 8ff50c1a3adefdf47cbae4a421198de1ecc6d259..66ada59acdbf61d42d900ea32ecb4db07df1ebc9 100644 (file)
@@ -446,17 +446,24 @@ std::string DOTGraphTraits<ScheduleDAG*>::getNodeLabel(const SUnit *SU,
                                                        const ScheduleDAG *G) {
   std::string Op;
 
-  if (!SU->getNode())
-    Op = "<CROSS RC COPY>";
-  else {
-    SmallVector<SDNode *, 4> FlaggedNodes;
-    for (SDNode *N = SU->getNode(); N; N = N->getFlaggedNode())
-      FlaggedNodes.push_back(N);
-    while (!FlaggedNodes.empty()) {
-      Op += DOTGraphTraits<SelectionDAG*>::getNodeLabel(FlaggedNodes.back(),
-                                                        G->DAG) + "\n";
-      FlaggedNodes.pop_back();
+  if (G->DAG) {
+    if (!SU->getNode())
+      Op = "<CROSS RC COPY>";
+    else {
+      SmallVector<SDNode *, 4> FlaggedNodes;
+      for (SDNode *N = SU->getNode(); N; N = N->getFlaggedNode())
+        FlaggedNodes.push_back(N);
+      while (!FlaggedNodes.empty()) {
+        Op += DOTGraphTraits<SelectionDAG*>::getNodeLabel(FlaggedNodes.back(),
+                                                          G->DAG) + "\n";
+        FlaggedNodes.pop_back();
+      }
     }
+  } else {
+    std::string s;
+    raw_string_ostream oss(s);
+    SU->MI->print(oss);
+    Op += oss.str();
   }
 
   return Op;