[llvm-branch-commits] [BOLT] Use aggregated FuncBranchData in writeBATYAML (PR #91289)
Amir Ayupov via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon May 13 12:43:51 PDT 2024
================
@@ -2386,25 +2362,26 @@ std::error_code DataAggregator::writeBATYAML(BinaryContext &BC,
return std::pair(BlockIt->first, BlockIt->second.getBBIndex());
};
- for (const auto &[FromOffset, SuccKV] : Branches.IntraIndex) {
- const auto &[_, Index] = getBlock(FromOffset);
- yaml::bolt::BinaryBasicBlockProfile &YamlBB = YamlBF.Blocks[Index];
- for (const auto &[SuccOffset, SuccDataIdx] : SuccKV)
- if (BlockMap.isInputBlock(SuccOffset))
- YamlBB.Successors.emplace_back(
- getSuccessorInfo(SuccOffset, SuccDataIdx));
- }
- for (const auto &[FromOffset, CallTo] : Branches.InterIndex) {
- const auto &[BlockOffset, BlockIndex] = getBlock(FromOffset);
- yaml::bolt::BinaryBasicBlockProfile &YamlBB = YamlBF.Blocks[BlockIndex];
- const uint32_t Offset = FromOffset - BlockOffset;
- for (const auto &[CallToLoc, CallToIdx] : CallTo)
- YamlBB.CallSites.emplace_back(
- getCallSiteInfo(CallToLoc, CallToIdx, Offset));
- llvm::sort(YamlBB.CallSites, [](yaml::bolt::CallSiteInfo &A,
- yaml::bolt::CallSiteInfo &B) {
- return A.Offset < B.Offset;
- });
+ for (const llvm::bolt::BranchInfo &BI : Branches.Data) {
+ using namespace yaml::bolt;
+ const auto &[BlockOffset, BlockIndex] = getBlock(BI.From.Offset);
+ BinaryBasicBlockProfile &YamlBB = YamlBF.Blocks[BlockIndex];
+ if (BI.To.IsSymbol && BI.To.Name == BI.From.Name && BI.To.Offset != 0) {
+ // Internal branch
+ const unsigned SuccIndex = getBlock(BI.To.Offset).second;
+ auto &SI = YamlBB.Successors.emplace_back(SuccessorInfo{SuccIndex});
+ SI.Count = BI.Branches;
----------------
aaupov wrote:
Type impedance means that if Count and Mispreds are passed to the constructor there needs to be an explicit cast (as the constructor doesn't accept uints). Whereas if the values are assigned to, there's an implicit cast.
https://github.com/llvm/llvm-project/pull/91289
More information about the llvm-branch-commits
mailing list