summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/GraphWriter.cpp
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-09-27 16:28:34 +0000
committerDan Gohman <gohman@apple.com>2010-09-27 16:28:34 +0000
commita0da88931c9e479bace8c60d0e8bb532224c2de3 (patch)
treec3d7a892e7af83b09d3def53aa5376b66738e5f2 /llvm/lib/Support/GraphWriter.cpp
parent38d773376ab825fb145a3c004e01bd85832d70cb (diff)
downloadbcm5719-llvm-a0da88931c9e479bace8c60d0e8bb532224c2de3.tar.gz
bcm5719-llvm-a0da88931c9e479bace8c60d0e8bb532224c2de3.zip
Add support for viewing graphviz graphs with xdot.py.
llvm-svn: 114832
Diffstat (limited to 'llvm/lib/Support/GraphWriter.cpp')
-rw-r--r--llvm/lib/Support/GraphWriter.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/llvm/lib/Support/GraphWriter.cpp b/llvm/lib/Support/GraphWriter.cpp
index fdd6285a8c5..47779eee0be 100644
--- a/llvm/lib/Support/GraphWriter.cpp
+++ b/llvm/lib/Support/GraphWriter.cpp
@@ -69,6 +69,32 @@ void llvm::DisplayGraph(const sys::Path &Filename, bool wait,
else
Filename.eraseFromDisk();
+#elif HAVE_XDOT_PY
+ sys::Path XDotPy();
+
+ std::vector<const char*> args;
+ args.push_back(LLVM_PATH_XDOT_PY);
+ args.push_back(Filename.c_str());
+
+ switch (program) {
+ case GraphProgram::DOT: args.push_back("-f"); args.push_back("dot"); break;
+ case GraphProgram::FDP: args.push_back("-f"); args.push_back("fdp"); break;
+ case GraphProgram::NEATO: args.push_back("-f"); args.push_back("neato");break;
+ case GraphProgram::TWOPI: args.push_back("-f"); args.push_back("twopi");break;
+ case GraphProgram::CIRCO: args.push_back("-f"); args.push_back("circo");break;
+ default: errs() << "Unknown graph layout name; using default.\n";
+ }
+
+ args.push_back(0);
+
+ errs() << "Running 'xdot.py' program... ";
+ if (sys::Program::ExecuteAndWait(sys::Path(LLVM_PATH_XDOT_PY),
+ &args[0],0,0,0,0,&ErrMsg))
+ errs() << "Error viewing graph " << Filename.str() << ": " << ErrMsg
+ << "\n";
+ else
+ Filename.eraseFromDisk();
+
#elif (HAVE_GV && (HAVE_DOT || HAVE_FDP || HAVE_NEATO || \
HAVE_TWOPI || HAVE_CIRCO))
sys::Path PSFilename = Filename;
OpenPOWER on IntegriCloud