[PGO] Add select instr profile in graph dump

Differential Revision: http://reviews.llvm.org/D29474

llvm-svn: 294055
This commit is contained in:
Xinliang David Li 2017-02-03 21:57:51 +00:00
parent c06f54122e
commit 6144a59b7f
1 changed files with 32 additions and 3 deletions

View File

@ -1331,6 +1331,16 @@ template <> struct GraphTraits<PGOUseFunc *> {
}
};
static std::string getSimpleNodeName(const BasicBlock *Node) {
if (!Node->getName().empty())
return Node->getName();
std::string SimpleNodeName;
raw_string_ostream OS(SimpleNodeName);
Node->printAsOperand(OS, false);
return OS.str();
}
template <> struct DOTGraphTraits<PGOUseFunc *> : DefaultDOTGraphTraits {
explicit DOTGraphTraits(bool isSimple = false)
: DefaultDOTGraphTraits(isSimple) {}
@ -1342,12 +1352,31 @@ template <> struct DOTGraphTraits<PGOUseFunc *> : DefaultDOTGraphTraits {
std::string getNodeLabel(const BasicBlock *Node, const PGOUseFunc *Graph) {
std::string Result;
raw_string_ostream OS(Result);
OS << Node->getName().str() << " : ";
OS << getSimpleNodeName(Node) << ":\\l";
UseBBInfo *BI = Graph->findBBInfo(Node);
OS << "Count : ";
if (BI && BI->CountValid)
OS << BI->CountValue;
OS << BI->CountValue << "\\l";
else
OS << "Unknown";
OS << "Unknown\\l";
if (!PGOInstrSelect)
return Result;
for (auto BI = Node->begin(); BI != Node->end(); ++BI) {
auto *I = &*BI;
if (!isa<SelectInst>(I))
continue;
// Display scaled counts for SELECT instruction:
OS << "SELECT : { T = ";
uint64_t TC, FC;
bool hasProf = I->extractProfMetadata(TC, FC);
if (!hasProf)
OS << "Unknown, F = Unknown }\\l";
else
OS << TC << ", F = " << FC << " }\\l";
}
return Result;
}
};