[PATCH] D21596: [MBFI] add edge label with branch probability info
David Li via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 21 21:53:49 PDT 2016
davidxl created this revision.
davidxl added reviewers: danielcdh, silvas.
davidxl added a subscriber: llvm-commits.
This patch improves the dot cfg dump for BFI with edges labeled with branch probability info. This gives a more complete picture of profiling of a function. It also helps to identify bugs in BFI. This of course can be done under an option, but I think it is better to always show the information as it does not clutter the graph in any way. See http://reviews.llvm.org/F2090394 as an example of BFI graph with BP info.
http://reviews.llvm.org/D21596
Files:
lib/CodeGen/MachineBlockFrequencyInfo.cpp
Index: lib/CodeGen/MachineBlockFrequencyInfo.cpp
===================================================================
--- lib/CodeGen/MachineBlockFrequencyInfo.cpp
+++ lib/CodeGen/MachineBlockFrequencyInfo.cpp
@@ -20,7 +20,9 @@
#include "llvm/InitializePasses.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
+#include "llvm/Support/Format.h"
#include "llvm/Support/GraphWriter.h"
+#include "llvm/Support/raw_ostream.h"
using namespace llvm;
@@ -80,6 +82,7 @@
explicit DOTGraphTraits(bool isSimple = false)
: DefaultDOTGraphTraits(isSimple) {}
+ typedef MachineBasicBlock::const_succ_iterator EdgeIter;
static std::string getGraphName(const MachineBlockFrequencyInfo *G) {
return G->getFunction()->getName();
}
@@ -104,6 +107,21 @@
return Result;
}
+ static std::string getEdgeAttributes(const MachineBasicBlock *Node,
+ EdgeIter EI,
+ const MachineBlockFrequencyInfo *MBFI) {
+ MachineBranchProbabilityInfo &MBPI =
+ MBFI->getAnalysis<MachineBranchProbabilityInfo>();
+ BranchProbability BP = MBPI.getEdgeProbability(Node, EI);
+ uint32_t N = BP.getNumerator();
+ uint32_t D = BP.getDenominator();
+ double Percent = 100.0 * N / D;
+ std::string Str;
+ raw_string_ostream OS(Str);
+ OS << format("label=\"%.1f%%\"", Percent);
+ OS.flush();
+ return Str;
+ }
};
} // end namespace llvm
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D21596.61501.patch
Type: text/x-patch
Size: 1471 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160622/d6618a31/attachment.bin>
More information about the llvm-commits
mailing list