From 7252939af0c063e7db573d746061ed0a8bc0cf4e Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 2 Mar 2004 21:39:43 +0000 Subject: [PATCH] FINALLY be able to get symbolic type names in the globals graph! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12082 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/DataStructure/Printer.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/Analysis/DataStructure/Printer.cpp b/lib/Analysis/DataStructure/Printer.cpp index 6775efe398e..03058fb3825 100644 --- a/lib/Analysis/DataStructure/Printer.cpp +++ b/lib/Analysis/DataStructure/Printer.cpp @@ -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 : 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();