forked from OSchip/llvm-project
Utility to dump .dot representation of SelectionDAG without firing viewer
Summary: This patch adds support for dumping .dot representation of SelectionDAG. It is inspired from the fact that, a developer may want to just dump the graph at a predictable path with a simple name to compare. The exisitng utility (i.e. viewGraph) are overkill for this motive hence this patch adds the requires support while using the core routines from GraphWriter. Example usage: DAG.dumpDotGraph("/tmp/graph.dot", "MyGraph") will create /tmp/graph.dot file when DAG is an object of SelectionDAG class. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D80711
This commit is contained in:
parent
b28167928d
commit
b3cff3c720
|
@ -433,6 +433,17 @@ public:
|
|||
ProfileSummaryInfo *getPSI() const { return PSI; }
|
||||
BlockFrequencyInfo *getBFI() const { return BFI; }
|
||||
|
||||
/// Just dump dot graph to a user-provided path and title.
|
||||
/// This doesn't open the dot viewer program and
|
||||
/// helps visualization when outside debugging session.
|
||||
/// FileName expects absolute path. If provided
|
||||
/// without any path separators then the file
|
||||
/// will be created in the current directory.
|
||||
/// Error will be emitted if the path is insane.
|
||||
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
|
||||
LLVM_DUMP_METHOD void dumpDotGraph(const Twine &FileName, const Twine &Title);
|
||||
#endif
|
||||
|
||||
/// Pop up a GraphViz/gv window with the DAG rendered using 'dot'.
|
||||
void viewGraph(const std::string &Title);
|
||||
void viewGraph();
|
||||
|
|
|
@ -341,6 +341,8 @@ std::string WriteGraph(const GraphType &G, const Twine &Name,
|
|||
} else if (EC) {
|
||||
errs() << "error writing into file" << "\n";
|
||||
return "";
|
||||
} else {
|
||||
errs() << "writing to the newly created file " << Filename << "\n";
|
||||
}
|
||||
}
|
||||
raw_fd_ostream O(FD, /*shouldClose=*/ true);
|
||||
|
@ -356,6 +358,17 @@ std::string WriteGraph(const GraphType &G, const Twine &Name,
|
|||
return Filename;
|
||||
}
|
||||
|
||||
/// DumpDotGraph - Just dump a dot graph to the user-provided file name.
|
||||
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
|
||||
template <typename GraphType>
|
||||
LLVM_DUMP_METHOD void
|
||||
dumpDotGraphToFile(const GraphType &G, const Twine &FileName,
|
||||
const Twine &Title, bool ShortNames = false,
|
||||
const Twine &Name = "") {
|
||||
llvm::WriteGraph(G, Name, ShortNames, Title, FileName.str());
|
||||
}
|
||||
#endif
|
||||
|
||||
/// ViewGraph - Emit a dot graph, run 'dot', run gv on the postscript file,
|
||||
/// then cleanup. For use from the debugger.
|
||||
///
|
||||
|
|
|
@ -164,6 +164,20 @@ void SelectionDAG::viewGraph() {
|
|||
viewGraph("");
|
||||
}
|
||||
|
||||
/// Just dump dot graph to a user-provided path and title.
|
||||
/// This doesn't open the dot viewer program and
|
||||
/// helps visualization when outside debugging session.
|
||||
/// FileName expects absolute path. If provided
|
||||
/// without any path separators then the file
|
||||
/// will be created in the current directory.
|
||||
/// Error will be emitted if the path is insane.
|
||||
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
|
||||
LLVM_DUMP_METHOD void SelectionDAG::dumpDotGraph(const Twine &FileName,
|
||||
const Twine &Title) {
|
||||
dumpDotGraphToFile(this, FileName, Title);
|
||||
}
|
||||
#endif
|
||||
|
||||
/// clearGraphAttrs - Clear all previously defined node graph attributes.
|
||||
/// Intended to be used from a debugging tool (eg. gdb).
|
||||
void SelectionDAG::clearGraphAttrs() {
|
||||
|
|
Loading…
Reference in New Issue