[llvm-branch-commits] [BOLT][BAT] Fix translate for branches added by BOLT (PR #90811)
Amir Ayupov via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri May 3 14:34:19 PDT 2024
================
@@ -478,18 +478,34 @@ uint64_t BoltAddressTranslation::translate(uint64_t FuncAddress,
return Offset;
const MapTy &Map = Iter->second;
+ if (IsBranchSrc) {
+ // Try exact lookup first
+ auto KeyVal = Map.find(Offset);
+ if (KeyVal != Map.end() && KeyVal->second & BRANCHENTRY)
+ return KeyVal->second >> 1;
+ }
auto KeyVal = Map.upper_bound(Offset);
if (KeyVal == Map.begin())
return Offset;
--KeyVal;
const uint32_t Val = KeyVal->second >> 1; // dropping BRANCHENTRY bit
- // Branch source addresses are translated to the first instruction of the
- // source BB to avoid accounting for modifications BOLT may have made in the
- // BB regarding deletion/addition of instructions.
- if (IsBranchSrc)
- return Val;
+ if (IsBranchSrc) {
----------------
aaupov wrote:
No as we use `find` for exact match, and `upper_bound` for regular translation.
https://github.com/llvm/llvm-project/pull/90811
More information about the llvm-branch-commits
mailing list