aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/DataStructure/Printer.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-03-02 21:39:43 +0000
committerChris Lattner <sabre@nondot.org>2004-03-02 21:39:43 +0000
commit7252939af0c063e7db573d746061ed0a8bc0cf4e (patch)
tree70d062c0577befe4dd73cc994891217d03a2a930 /lib/Analysis/DataStructure/Printer.cpp
parenta19ba52596d97fed401333831ce7857cd333642d (diff)
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
Diffstat (limited to 'lib/Analysis/DataStructure/Printer.cpp')
-rw-r--r--lib/Analysis/DataStructure/Printer.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/Analysis/DataStructure/Printer.cpp b/lib/Analysis/DataStructure/Printer.cpp
index 6775efe398..03058fb382 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<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();