[llvm] [SampleProfileLoader] Fix integer overflow in generateMDProfMetadata (PR #90217)
via llvm-commits
llvm-commits at lists.llvm.org
Tue May 7 09:04:07 PDT 2024
================
@@ -1713,13 +1713,15 @@ void SampleProfileLoader::generateMDProfMetadata(Function &F) {
// if needed. Sample counts in profiles are 64-bit unsigned values,
// but internally branch weights are expressed as 32-bit values.
if (Weight > std::numeric_limits<uint32_t>::max()) {
- LLVM_DEBUG(dbgs() << " (saturated due to uint32_t overflow)");
+ LLVM_DEBUG(dbgs() << " (saturated due to uint32_t overflow)\n");
Weight = std::numeric_limits<uint32_t>::max();
}
if (!SampleProfileUseProfi) {
// Weight is added by one to avoid propagation errors introduced by
// 0 weights.
- Weights.push_back(static_cast<uint32_t>(Weight + 1));
+ Weights.push_back(static_cast<uint32_t>(
----------------
spupyrev wrote:
Of course, I didn't plan to delay the patch, will stamp it.
(Though if you care about perf and the experiments with profi aren't too time-consuming, please try it out and share the results with us. Ultimately it would be great to keep only one codepath here, but the change should be done carefully)
https://github.com/llvm/llvm-project/pull/90217
More information about the llvm-commits
mailing list