diff options
author | Dan Gohman <gohman@apple.com> | 2010-09-27 16:28:34 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-09-27 16:28:34 +0000 |
commit | a0da88931c9e479bace8c60d0e8bb532224c2de3 (patch) | |
tree | c3d7a892e7af83b09d3def53aa5376b66738e5f2 /llvm/lib/Support/GraphWriter.cpp | |
parent | 38d773376ab825fb145a3c004e01bd85832d70cb (diff) | |
download | bcm5719-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.cpp | 26 |
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; |