[llvm] r294055 - [PGO] Add select instr profile in graph dump
Xinliang David Li via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 3 13:57:51 PST 2017
Author: davidxl
Date: Fri Feb 3 15:57:51 2017
New Revision: 294055
URL: http://llvm.org/viewvc/llvm-project?rev=294055&view=rev
Log:
[PGO] Add select instr profile in graph dump
Differential Revision: http://reviews.llvm.org/D29474
Modified:
llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
Modified: llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp?rev=294055&r1=294054&r2=294055&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp (original)
+++ llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp Fri Feb 3 15:57:51 2017
@@ -1331,6 +1331,16 @@ template <> struct GraphTraits<PGOUseFun
}
};
+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<PGOUse
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;
}
};
More information about the llvm-commits
mailing list