[PATCH] D80711: Utility to dump .dot representation of SelectionDAG without firing viewer
Madhur Amilkanthwar via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu May 28 09:50:22 PDT 2020
madhur13490 updated this revision to Diff 266917.
madhur13490 added a comment.
Update summary
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D80711/new/
https://reviews.llvm.org/D80711
Files:
llvm/include/llvm/CodeGen/SelectionDAG.h
llvm/include/llvm/Support/GraphWriter.h
llvm/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
===================================================================
--- llvm/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
+++ llvm/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
@@ -158,6 +158,23 @@
#endif // NDEBUG
}
+/// 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.
+void SelectionDAG::dumpDotGraph(const std::string &FileName,
+ const Twine &Title) {
+// This code is only for debugging!
+#ifndef NDEBUG
+ DumpDotGraph(this, FileName, Title);
+#else
+ errs() << "SelectionDAG::DumpDotGraph is only available in debug builds.\n";
+#endif // NDEBUG
+}
+
// This overload is defined out-of-line here instead of just using a
// default parameter because this is easiest for gdb to call.
void SelectionDAG::viewGraph() {
Index: llvm/include/llvm/Support/GraphWriter.h
===================================================================
--- llvm/include/llvm/Support/GraphWriter.h
+++ llvm/include/llvm/Support/GraphWriter.h
@@ -341,6 +341,8 @@
} 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 @@
return Filename;
}
+/// DumpDotGraph - Just emit a dot graph to the user-provided file name.
+template <typename GraphType>
+void DumpDotGraph(const GraphType &G, const std::string &FileName,
+ const Twine &Title, bool ShortNames = false,
+ const Twine &Name = "") {
+ std::string Filename = llvm::WriteGraph(G, Name, ShortNames, Title, FileName);
+
+ if (Filename.empty())
+ return;
+}
+
/// ViewGraph - Emit a dot graph, run 'dot', run gv on the postscript file,
/// then cleanup. For use from the debugger.
///
Index: llvm/include/llvm/CodeGen/SelectionDAG.h
===================================================================
--- llvm/include/llvm/CodeGen/SelectionDAG.h
+++ llvm/include/llvm/CodeGen/SelectionDAG.h
@@ -432,6 +432,15 @@
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.
+ void dumpDotGraph(const std::string &FileName, const Twine &Title);
+
/// Pop up a GraphViz/gv window with the DAG rendered using 'dot'.
void viewGraph(const std::string &Title);
void viewGraph();
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D80711.266917.patch
Type: text/x-patch
Size: 3105 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200528/a6623cea/attachment.bin>
More information about the llvm-commits
mailing list