[llvm] [profcheck] Add unknown branch weights for inlined strcmp/strncmp (PR #160455)
Jin Huang via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 24 00:35:39 PDT 2025
https://github.com/jinhuang1102 updated https://github.com/llvm/llvm-project/pull/160455
>From ad625aff9f91f507e86509fbc8a6ad66810d54a0 Mon Sep 17 00:00:00 2001
From: Jin Huang <jingold at google.com>
Date: Wed, 24 Sep 2025 07:25:22 +0000
Subject: [PATCH] [profcheck]Add the missing profile handling in for
strcmp/strncmp.
---
.../AggressiveInstCombine/AggressiveInstCombine.cpp | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp b/llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp
index 40de36d81ddd2..d00a3bc86d6b8 100644
--- a/llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp
+++ b/llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp
@@ -29,6 +29,7 @@
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/PatternMatch.h"
+#include "llvm/IR/ProfDataUtils.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "llvm/Transforms/Utils/BuildLibCalls.h"
#include "llvm/Transforms/Utils/Local.h"
@@ -1283,11 +1284,14 @@ void StrNCmpInliner::inlineCompare(Value *LHS, StringRef RHS, uint64_t N,
Value *VR =
ConstantInt::get(CI->getType(), static_cast<unsigned char>(RHS[i]));
Value *Sub = Swapped ? B.CreateSub(VR, VL) : B.CreateSub(VL, VR);
- if (i < N - 1)
- B.CreateCondBr(B.CreateICmpNE(Sub, ConstantInt::get(CI->getType(), 0)),
- BBNE, BBSubs[i + 1]);
- else
+ if (i < N - 1) {
+ BranchInst *CondBrInst = B.CreateCondBr(
+ B.CreateICmpNE(Sub, ConstantInt::get(CI->getType(), 0)), BBNE,
+ BBSubs[i + 1]);
+ setExplicitlyUnknownBranchWeights(*CondBrInst, DEBUG_TYPE);
+ } else {
B.CreateBr(BBNE);
+ }
Phi->addIncoming(Sub, BBSubs[i]);
}
More information about the llvm-commits
mailing list