Print the DAG out more like a DAG in nested format.
authorChris Lattner <sabre@nondot.org>
Sun, 9 Jan 2005 20:38:33 +0000 (20:38 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 9 Jan 2005 20:38:33 +0000 (20:38 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19422 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/SelectionDAG.cpp

index 2bd173950158443a72d319408d3f3bf0240244a4..3b4694a764d6467084e0f89e233b4673a0236f5c 100644 (file)
@@ -920,15 +920,31 @@ void SDNode::dump() const {
 
 }
 
+static void DumpNodes(SDNode *N, unsigned indent) {
+  for (unsigned i = 0, e = N->getNumOperands(); i != e; ++i)
+    if (N->getOperand(i).Val->hasOneUse())
+      DumpNodes(N->getOperand(i).Val, indent+2);
+    else
+      std::cerr << "\n" << std::string(indent+2, ' ')
+                << (void*)N->getOperand(i).Val << ": <multiple use>";
+    
+
+  std::cerr << "\n" << std::string(indent, ' ');
+  N->dump();
+}
+
 void SelectionDAG::dump() const {
   std::cerr << "SelectionDAG has " << AllNodes.size() << " nodes:";
   std::vector<SDNode*> Nodes(AllNodes);
   std::sort(Nodes.begin(), Nodes.end());
 
   for (unsigned i = 0, e = Nodes.size(); i != e; ++i) {
-    std::cerr << "\n  ";
-    Nodes[i]->dump();
+    if (!Nodes[i]->hasOneUse() && Nodes[i] != getRoot().Val)
+      DumpNodes(Nodes[i], 2);
   }
+
+  DumpNodes(getRoot().Val, 2);
+
   std::cerr << "\n\n";
 }