mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-04-01 12:43:47 +00:00
[BOLT] computing raw branch count for yaml profiles
`Function.RawBranchCount` is initialized for fdata profile but not for yaml one. The diff adds the computation of the field for yaml profiles Reviewed By: Amir Differential Revision: https://reviews.llvm.org/D144211
This commit is contained in:
parent
69bab9d919
commit
92758a99c3
@ -1794,6 +1794,10 @@ public:
|
||||
/// executions corresponding to this function.
|
||||
uint64_t getRawBranchCount() const { return RawBranchCount; }
|
||||
|
||||
/// Set the profile data about the number of branch executions corresponding
|
||||
/// to this function.
|
||||
void setRawBranchCount(uint64_t Count) { RawBranchCount = Count; }
|
||||
|
||||
/// Return the execution count for functions with known profile.
|
||||
/// Return 0 if the function has no profile.
|
||||
uint64_t getKnownExecutionCount() const {
|
||||
|
@ -470,6 +470,7 @@ void BinaryFunction::print(raw_ostream &OS, std::string Annotation) {
|
||||
OS << "\n Image : 0x" << Twine::utohexstr(getImageAddress());
|
||||
if (ExecutionCount != COUNT_NO_PROFILE) {
|
||||
OS << "\n Exec Count : " << ExecutionCount;
|
||||
OS << "\n Branch Count: " << RawBranchCount;
|
||||
OS << "\n Profile Acc : " << format("%.1f%%", ProfileMatchRatio * 100.0f);
|
||||
}
|
||||
|
||||
|
@ -83,6 +83,12 @@ bool YAMLProfileReader::parseFunctionProfile(
|
||||
|
||||
BF.setExecutionCount(YamlBF.ExecCount);
|
||||
|
||||
uint64_t FuncRawBranchCount = 0;
|
||||
for (const yaml::bolt::BinaryBasicBlockProfile &YamlBB : YamlBF.Blocks)
|
||||
for (const yaml::bolt::SuccessorInfo &YamlSI : YamlBB.Successors)
|
||||
FuncRawBranchCount += YamlSI.Count;
|
||||
BF.setRawBranchCount(FuncRawBranchCount);
|
||||
|
||||
if (!opts::IgnoreHash && YamlBF.Hash != BF.computeHash(/*UseDFS=*/true)) {
|
||||
if (opts::Verbosity >= 1)
|
||||
errs() << "BOLT-WARNING: function hash mismatch\n";
|
||||
|
@ -3,18 +3,19 @@
|
||||
# Also checks that llvm-bolt disassembler and CFG builder is working properly.
|
||||
|
||||
RUN: yaml2obj %p/Inputs/blarge.yaml &> %t.exe
|
||||
RUN: llvm-bolt %t.exe -o /dev/null --data %p/Inputs/blarge.fdata --print-cfg
|
||||
RUN: llvm-bolt %t.exe -o /dev/null --data %p/Inputs/blarge.fdata --print-cfg | FileCheck %s
|
||||
|
||||
CHECK: Binary Function "usqrt"
|
||||
CHECK: State : CFG constructed
|
||||
CHECK: Address : 0x401170
|
||||
CHECK: Size : 0x43
|
||||
CHECK: MaxSize : 0x50
|
||||
CHECK: Offset : 0x1170
|
||||
CHECK: MaxSize : 0x43
|
||||
CHECK: Offset : 0xcb0
|
||||
CHECK: Section : .text
|
||||
CHECK: IsSimple : 1
|
||||
CHECK: BB Count : 5
|
||||
CHECK: Exec Count : 199
|
||||
CHECK: Branch Count: 7689
|
||||
CHECK: }
|
||||
CHECK: .LBB{{.*}}
|
||||
CHECK: Exec Count : 199
|
||||
|
Loading…
x
Reference in New Issue
Block a user