[llvm] [Analysis][NFC] Use block numbers for BranchProbabilityInfo (PR #186658)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Sun Mar 15 11:12:27 PDT 2026
================
@@ -1284,9 +1284,32 @@ void BPIConstruction::calculate(const Function &F, const LoopInfo &LoopI,
} // end anonymous namespace
-void BranchProbabilityInfo::releaseMemory() {
- Probs.clear();
- Handles.clear();
+MutableArrayRef<BranchProbability>
+BranchProbabilityInfo::allocEdges(const BasicBlock *BB) {
+ assert(BB->getParent() == LastF);
+ assert(BlockNumberEpoch == LastF->getBlockNumberEpoch());
+ unsigned NumSuccs = succ_size(BB);
+ if (NumSuccs == 0) {
+ eraseBlock(BB);
+ return {};
+ }
+ if (EdgeStarts.size() <= BB->getNumber())
+ EdgeStarts.resize(LastF->getMaxBlockNumber(), 0);
+ unsigned EdgeStart = Probs.size();
+ EdgeStarts[BB->getNumber()] = EdgeStart + 1; // 0 = no edges.
+ Probs.append(NumSuccs, {});
+ return MutableArrayRef(&Probs[EdgeStart], NumSuccs);
+}
+
+const BranchProbability *
----------------
nikic wrote:
Can we return ArrayRef here as well, so it's bounds-checked?
https://github.com/llvm/llvm-project/pull/186658
More information about the llvm-commits
mailing list