1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00

Make the SelectionDAG graph printer use SDNode::PersistentId labels.

r248010 changed the -debug output to use short ids, but did not
similarly modify the graph printer. Change to be consistent, for ease of
cross-reference.

llvm-svn: 251465
This commit is contained in:
James Y Knight 2015-10-27 23:09:03 +00:00
parent b569856ee4
commit 1bc277004d
5 changed files with 28 additions and 20 deletions

View File

@ -72,11 +72,12 @@ public:
return "";
}
/// hasNodeAddressLabel - If this method returns true, the address of the node
/// is added to the label of the node.
template<typename GraphType>
static bool hasNodeAddressLabel(const void *, const GraphType &) {
return false;
// getNodeIdentifierLabel - Returns a string representing the
// address or other unique identifier of the node. (Only used if
// non-empty.)
template <typename GraphType>
static std::string getNodeIdentifierLabel(const void *, const GraphType &) {
return "";
}
template<typename GraphType>

View File

@ -175,8 +175,9 @@ public:
O << DOT::EscapeString(DTraits.getNodeLabel(Node, G));
// If we should include the address of the node in the label, do so now.
if (DTraits.hasNodeAddressLabel(Node, G))
O << "|" << static_cast<const void*>(Node);
std::string Id = DTraits.getNodeIdentifierLabel(Node, G);
if (!Id.empty())
O << "|" << DOT::EscapeString(Id);
std::string NodeDesc = DTraits.getNodeDescription(Node, G);
if (!NodeDesc.empty())
@ -199,8 +200,9 @@ public:
O << DOT::EscapeString(DTraits.getNodeLabel(Node, G));
// If we should include the address of the node in the label, do so now.
if (DTraits.hasNodeAddressLabel(Node, G))
O << "|" << static_cast<const void*>(Node);
std::string Id = DTraits.getNodeIdentifierLabel(Node, G);
if (!Id.empty())
O << "|" << DOT::EscapeString(Id);
std::string NodeDesc = DTraits.getNodeDescription(Node, G);
if (!NodeDesc.empty())

View File

@ -3310,11 +3310,6 @@ struct DOTGraphTraits<ScheduleDAGMI*> : public DefaultDOTGraphTraits {
|| Node->Succs.size() > ViewMISchedCutoff);
}
static bool hasNodeAddressLabel(const SUnit *Node,
const ScheduleDAG *Graph) {
return false;
}
/// If you want to override the dot attributes printed for a particular
/// edge, override this method.
static std::string getEdgeAttributes(const SUnit *Node,

View File

@ -43,9 +43,12 @@ namespace llvm {
return (Node->NumPreds > 10 || Node->NumSuccs > 10);
}
static bool hasNodeAddressLabel(const SUnit *Node,
const ScheduleDAG *Graph) {
return true;
static std::string getNodeIdentifierLabel(const SUnit *Node,
const ScheduleDAG *Graph) {
std::string R;
raw_string_ostream OS(R);
OS << static_cast<const void *>(Node);
return R;
}
/// If you want to override the dot attributes printed for a particular

View File

@ -80,9 +80,16 @@ namespace llvm {
return true;
}
static bool hasNodeAddressLabel(const SDNode *Node,
const SelectionDAG *Graph) {
return true;
static std::string getNodeIdentifierLabel(const SDNode *Node,
const SelectionDAG *Graph) {
std::string R;
raw_string_ostream OS(R);
#ifndef NDEBUG
OS << 't' << Node->PersistentId;
#else
OS << static_cast<const void *>(Node);
#endif
return R;
}
/// If you want to override the dot attributes printed for a particular