[llvm] [InstCombine][CmpInstAnalysis] Use consistent spelling and function names. NFC. (PR #171645)
Tirthankar Mazumder via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 10 08:50:37 PST 2025
https://github.com/wermos created https://github.com/llvm/llvm-project/pull/171645
Both `decomposeBitTestICmp` and `decomposeBitTest` have a parameter called `lookThroughTrunc`. This was spelled in full (i.e. `lookThroughTrunc`) in the header (see [here](https://github.com/llvm/llvm-project/blob/f8580c915f0b5205ddc3ae5e8286653ddc1d8d68/llvm/include/llvm/Analysis/CmpInstAnalysis.h#L110) and [here](https://github.com/llvm/llvm-project/blob/f8580c915f0b5205ddc3ae5e8286653ddc1d8d68/llvm/include/llvm/Analysis/CmpInstAnalysis.h#L118)).
However, in the implementation, it's written as
https://github.com/llvm/llvm-project/blob/54b4bd510a8cc90fac3d2071179d1424af894c9c/llvm/lib/Analysis/CmpInstAnalysis.cpp#L78
and
https://github.com/llvm/llvm-project/blob/54b4bd510a8cc90fac3d2071179d1424af894c9c/llvm/lib/Analysis/CmpInstAnalysis.cpp#L188
I opted to convert all instances of `lookThruTrunc` into `lookThroughTrunc` to reduce surprise while reading the code and for conformity.
---
The other change in this PR is the renaming of the wrapper around `decomposeBitTest()`. Even though it was a wrapper around `CmpInstAnalysis.h`'s `decomposeBitTest`, the function was called `decomposeBitTestICmp`. This is quite confusing because such a function _also_ exists in `CmpInstAnalysis.h`, but it is _not_ the one actually being used in `InstCombineAndOrXor.cpp`.
>From f9b142cf9cd9963fbf121bd8dbe339bc476d3c94 Mon Sep 17 00:00:00 2001
From: wermos <63574588+wermos at users.noreply.github.com>
Date: Wed, 10 Dec 2025 20:38:01 +0530
Subject: [PATCH 1/3] Use consistent, full-form spelling.
---
llvm/lib/Analysis/CmpInstAnalysis.cpp | 8 ++++----
llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/llvm/lib/Analysis/CmpInstAnalysis.cpp b/llvm/lib/Analysis/CmpInstAnalysis.cpp
index a1a79e5685f80..a6d0d3ff4fcd4 100644
--- a/llvm/lib/Analysis/CmpInstAnalysis.cpp
+++ b/llvm/lib/Analysis/CmpInstAnalysis.cpp
@@ -75,7 +75,7 @@ Constant *llvm::getPredForFCmpCode(unsigned Code, Type *OpTy,
std::optional<DecomposedBitTest>
llvm::decomposeBitTestICmp(Value *LHS, Value *RHS, CmpInst::Predicate Pred,
- bool LookThruTrunc, bool AllowNonZeroC,
+ bool LookThroughTrunc, bool AllowNonZeroC,
bool DecomposeAnd) {
using namespace PatternMatch;
@@ -173,7 +173,7 @@ llvm::decomposeBitTestICmp(Value *LHS, Value *RHS, CmpInst::Predicate Pred,
Result.Pred = ICmpInst::getInversePredicate(Result.Pred);
Value *X;
- if (LookThruTrunc && match(LHS, m_Trunc(m_Value(X)))) {
+ if (LookThroughTrunc && match(LHS, m_Trunc(m_Value(X)))) {
Result.X = X;
Result.Mask = Result.Mask.zext(X->getType()->getScalarSizeInBits());
Result.C = Result.C.zext(X->getType()->getScalarSizeInBits());
@@ -185,7 +185,7 @@ llvm::decomposeBitTestICmp(Value *LHS, Value *RHS, CmpInst::Predicate Pred,
}
std::optional<DecomposedBitTest> llvm::decomposeBitTest(Value *Cond,
- bool LookThruTrunc,
+ bool LookThroughTrunc,
bool AllowNonZeroC,
bool DecomposeAnd) {
using namespace PatternMatch;
@@ -194,7 +194,7 @@ std::optional<DecomposedBitTest> llvm::decomposeBitTest(Value *Cond,
if (!ICmp->getOperand(0)->getType()->isIntOrIntVectorTy())
return std::nullopt;
return decomposeBitTestICmp(ICmp->getOperand(0), ICmp->getOperand(1),
- ICmp->getPredicate(), LookThruTrunc,
+ ICmp->getPredicate(), LookThroughTrunc,
AllowNonZeroC, DecomposeAnd);
}
Value *X;
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
index ba5568b00441b..5e271fcd76a2c 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
@@ -3890,7 +3890,7 @@ static std::optional<DecomposedBitMaskMul> matchBitmaskMul(Value *V) {
// Decompose ((A & N) ? 0 : N * C) into BitMaskMul
if (match(Op, m_Select(m_Value(Cond), m_APInt(EqZero), m_APInt(NeZero)))) {
auto ICmpDecompose =
- decomposeBitTest(Cond, /*LookThruTrunc=*/true,
+ decomposeBitTest(Cond, /*LookThroughTrunc=*/true,
/*AllowNonZeroC=*/false, /*DecomposeBitMask=*/true);
if (!ICmpDecompose.has_value())
return std::nullopt;
>From 7e3d26985e8769de59f238c4f14173008f92dfba Mon Sep 17 00:00:00 2001
From: wermos <63574588+wermos at users.noreply.github.com>
Date: Wed, 10 Dec 2025 20:39:00 +0530
Subject: [PATCH 2/3] Use correct name for function.
---
llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
index 5e271fcd76a2c..64df974589055 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
@@ -186,8 +186,8 @@ static unsigned conjugateICmpMask(unsigned Mask) {
return NewMask;
}
-// Adapts the external decomposeBitTestICmp for local use.
-static bool decomposeBitTestICmp(Value *Cond, CmpInst::Predicate &Pred,
+// Adapts the external decomposeBitTest for local use.
+static bool decomposeBitTest(Value *Cond, CmpInst::Predicate &Pred,
Value *&X, Value *&Y, Value *&Z) {
auto Res = llvm::decomposeBitTest(Cond, /*LookThroughTrunc=*/true,
/*AllowNonZeroC=*/true);
@@ -220,7 +220,7 @@ getMaskedTypeForICmpPair(Value *&A, Value *&B, Value *&C, Value *&D, Value *&E,
// Check whether the icmp can be decomposed into a bit test.
Value *L1, *L11, *L12, *L2, *L21, *L22;
- if (decomposeBitTestICmp(LHS, PredL, L11, L12, L2)) {
+ if (decomposeBitTest(LHS, PredL, L11, L12, L2)) {
L21 = L22 = L1 = nullptr;
} else {
auto *LHSCMP = dyn_cast<ICmpInst>(LHS);
@@ -253,7 +253,7 @@ getMaskedTypeForICmpPair(Value *&A, Value *&B, Value *&C, Value *&D, Value *&E,
return std::nullopt;
Value *R11, *R12, *R2;
- if (decomposeBitTestICmp(RHS, PredR, R11, R12, R2)) {
+ if (decomposeBitTest(RHS, PredR, R11, R12, R2)) {
if (R11 == L11 || R11 == L12 || R11 == L21 || R11 == L22) {
A = R11;
D = R12;
>From 6f775b4446497e825cbd08c978d3a5498ec5a2ab Mon Sep 17 00:00:00 2001
From: wermos <63574588+wermos at users.noreply.github.com>
Date: Wed, 10 Dec 2025 20:57:01 +0530
Subject: [PATCH 3/3] Update variable name in comment.
---
llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
index abf4381ebd794..1859dad4ec00b 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
@@ -6290,7 +6290,7 @@ Instruction *InstCombinerImpl::foldICmpWithTrunc(ICmpInst &ICmp) {
// This matches patterns corresponding to tests of the signbit as well as:
// (trunc X) pred C2 --> (X & Mask) == C
- if (auto Res = decomposeBitTestICmp(Op0, Op1, Pred, /*WithTrunc=*/true,
+ if (auto Res = decomposeBitTestICmp(Op0, Op1, Pred, /*LookThroughTrunc=*/true,
/*AllowNonZeroC=*/true)) {
Value *And = Builder.CreateAnd(Res->X, Res->Mask);
Constant *C = ConstantInt::get(Res->X->getType(), Res->C);
More information about the llvm-commits
mailing list