FINALLY be able to get symbolic type names in the globals graph!
authorChris Lattner <sabre@nondot.org>
Tue, 2 Mar 2004 21:39:43 +0000 (21:39 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 2 Mar 2004 21:39:43 +0000 (21:39 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12082 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/DataStructure/Printer.cpp

index 6775efe398e1b1eb3536f039000d43e25b205fa1..03058fb38259b7946de1fc38e828265c2af64a22 100644 (file)
@@ -40,11 +40,17 @@ static std::string getCaption(const DSNode *N, const DSGraph *G) {
   std::stringstream OS;
   Module *M = 0;
 
-  if (G) G = N->getParentGraph();
+  if (!G) G = N->getParentGraph();
 
   // Get the module from ONE of the functions in the graph it is available.
   if (G && !G->getReturnNodes().empty())
     M = G->getReturnNodes().begin()->first->getParent();
+  if (M == 0 && G) {
+    // If there is a global in the graph, we can use it to find the module.
+    const DSScalarMap &SM = G->getScalarMap();
+    if (SM.global_begin() != SM.global_end())
+      M = (*SM.global_begin())->getParent();
+  }
 
   if (N->isNodeCompletelyFolded())
     OS << "COLLAPSED";
@@ -108,6 +114,13 @@ struct DOTGraphTraits<const DSGraph*> : public DefaultDOTGraphTraits {
     Module *CurMod = 0;
     if (!G->getReturnNodes().empty())
       CurMod = G->getReturnNodes().begin()->first->getParent();
+    else {
+      // If there is a global in the graph, we can use it to find the module.
+      const DSScalarMap &SM = G->getScalarMap();
+      if (SM.global_begin() != SM.global_end())
+        CurMod = (*SM.global_begin())->getParent();
+    }
+
 
     // Add scalar nodes to the graph...
     const DSGraph::ScalarMapTy &VM = G->getScalarMap();