[llvm-branch-commits] [llvm] [BOLT] Match blocks with calls as anchors (PR #96596)
Amir Ayupov via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Jul 3 11:03:40 PDT 2024
================
@@ -193,18 +193,43 @@ class StaleMatcher {
public:
/// Initialize stale matcher.
void init(const std::vector<FlowBlock *> &Blocks,
- const std::vector<BlendedBlockHash> &Hashes) {
+ const std::vector<BlendedBlockHash> &Hashes,
+ const std::vector<uint64_t> &CallHashes) {
assert(Blocks.size() == Hashes.size() &&
+ Hashes.size() == CallHashes.size() &&
"incorrect matcher initialization");
for (size_t I = 0; I < Blocks.size(); I++) {
FlowBlock *Block = Blocks[I];
uint16_t OpHash = Hashes[I].OpcodeHash;
OpHashToBlocks[OpHash].push_back(std::make_pair(Hashes[I], Block));
+ if (CallHashes[I])
+ CallHashToBlocks[CallHashes[I]].push_back(
+ std::make_pair(Hashes[I], Block));
}
}
/// Find the most similar block for a given hash.
- const FlowBlock *matchBlock(BlendedBlockHash BlendedHash) const {
+ const FlowBlock *matchBlock(BlendedBlockHash &BlendedHash,
+ uint64_t &CallHash) const {
----------------
aaupov wrote:
```suggestion
const FlowBlock *matchBlock(BlendedBlockHash BlendedHash,
uint64_t CallHash) const {
```
BlendedBlockHash is aliased to uint64_t, and integral types should be passed by value.
https://github.com/llvm/llvm-project/pull/96596
More information about the llvm-branch-commits
mailing list