diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/CodeGen/SelectionDAG.h | 21 | ||||
-rw-r--r-- | include/llvm/Support/DOTGraphTraits.h | 4 | ||||
-rw-r--r-- | include/llvm/Support/GraphWriter.h | 2 |
3 files changed, 24 insertions, 3 deletions
diff --git a/include/llvm/CodeGen/SelectionDAG.h b/include/llvm/CodeGen/SelectionDAG.h index 0475147b91..c173eb122c 100644 --- a/include/llvm/CodeGen/SelectionDAG.h +++ b/include/llvm/CodeGen/SelectionDAG.h @@ -69,10 +69,29 @@ public: TargetLowering &getTargetLoweringInfo() const { return TLI; } MachineDebugInfo *getMachineDebugInfo() const { return DI; } - /// viewGraph - Pop up a ghostview window with the DAG rendered using 'dot'. + /// viewGraph - Pop up a GraphViz/gv window with the DAG rendered using 'dot'. /// void viewGraph(); + +#ifndef NDEBUG + std::map<const SDNode *, std::string> NodeGraphAttrs; +#endif + /// clearGraphAttrs - Clear all previously defined node graph attributes. + /// Intended to be used from a debugging tool (eg. gdb). + void clearGraphAttrs(); + + /// setGraphAttrs - Set graph attributes for a node. (eg. "color=red".) + /// + void setGraphAttrs(const SDNode *N, const char *Attrs); + + /// getGraphAttrs - Get graph attributes for a node. (eg. "color=red".) + /// Used from getNodeAttributes. + const std::string getGraphAttrs(const SDNode *N) const; + + /// setGraphColor - Convenience for setting node color attribute. + /// + void setGraphColor(const SDNode *N, const char *Color); typedef ilist<SDNode>::const_iterator allnodes_const_iterator; allnodes_const_iterator allnodes_begin() const { return AllNodes.begin(); } diff --git a/include/llvm/Support/DOTGraphTraits.h b/include/llvm/Support/DOTGraphTraits.h index 9300ea7a8a..62eac0cea9 100644 --- a/include/llvm/Support/DOTGraphTraits.h +++ b/include/llvm/Support/DOTGraphTraits.h @@ -60,7 +60,9 @@ struct DefaultDOTGraphTraits { /// If you want to specify custom node attributes, this is the place to do so /// - static std::string getNodeAttributes(const void *Node) { return ""; } + static std::string getNodeAttributes(const void *Node, const void *Graph) { + return ""; + } /// If you want to override the dot attributes printed for a particular edge, /// override this method. diff --git a/include/llvm/Support/GraphWriter.h b/include/llvm/Support/GraphWriter.h index 6bf43d29c7..b4e6d845e6 100644 --- a/include/llvm/Support/GraphWriter.h +++ b/include/llvm/Support/GraphWriter.h @@ -109,7 +109,7 @@ public: } void writeNode(NodeType *Node) { - std::string NodeAttributes = DOTTraits::getNodeAttributes(Node); + std::string NodeAttributes = DOTTraits::getNodeAttributes(Node, G); O << "\tNode" << reinterpret_cast<const void*>(Node) << " [shape=record,"; if (!NodeAttributes.empty()) O << NodeAttributes << ","; |