[llvm] 14b0ae4 - [InstCombine] Remove redundant fold in foldUnsignedUnderflowCheck() (NFCI)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 24 07:57:27 PDT 2023
Author: Nikita Popov
Date: 2023-10-24T16:57:18+02:00
New Revision: 14b0ae439ff8c92bce47f0b5dbe6d5a9f02de338
URL: https://github.com/llvm/llvm-project/commit/14b0ae439ff8c92bce47f0b5dbe6d5a9f02de338
DIFF: https://github.com/llvm/llvm-project/commit/14b0ae439ff8c92bce47f0b5dbe6d5a9f02de338.diff
LOG: [InstCombine] Remove redundant fold in foldUnsignedUnderflowCheck() (NFCI)
Base - Offset == 0 will get canonicalized to Base == Offset even
in multi-use contexts, at which point all of these patterns already
get handled by generic code.
Added:
Modified:
llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
index 3e0218d9b76d1f7..cedd8f47fe651f2 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
@@ -1099,39 +1099,6 @@ static Value *foldUnsignedUnderflowCheck(ICmpInst *ZeroICmp,
return Builder.CreateICmpUGE(Builder.CreateNeg(B), A);
}
- Value *Base, *Offset;
- if (!match(ZeroCmpOp, m_Sub(m_Value(Base), m_Value(Offset))))
- return nullptr;
-
- if (!match(UnsignedICmp,
- m_c_ICmp(UnsignedPred, m_Specific(Base), m_Specific(Offset))) ||
- !ICmpInst::isUnsigned(UnsignedPred))
- return nullptr;
-
- // Base >=/> Offset && (Base - Offset) != 0 <--> Base > Offset
- // (no overflow and not null)
- if ((UnsignedPred == ICmpInst::ICMP_UGE ||
- UnsignedPred == ICmpInst::ICMP_UGT) &&
- EqPred == ICmpInst::ICMP_NE && IsAnd)
- return Builder.CreateICmpUGT(Base, Offset);
-
- // Base <=/< Offset || (Base - Offset) == 0 <--> Base <= Offset
- // (overflow or null)
- if ((UnsignedPred == ICmpInst::ICMP_ULE ||
- UnsignedPred == ICmpInst::ICMP_ULT) &&
- EqPred == ICmpInst::ICMP_EQ && !IsAnd)
- return Builder.CreateICmpULE(Base, Offset);
-
- // Base <= Offset && (Base - Offset) != 0 --> Base < Offset
- if (UnsignedPred == ICmpInst::ICMP_ULE && EqPred == ICmpInst::ICMP_NE &&
- IsAnd)
- return Builder.CreateICmpULT(Base, Offset);
-
- // Base > Offset || (Base - Offset) == 0 --> Base >= Offset
- if (UnsignedPred == ICmpInst::ICMP_UGT && EqPred == ICmpInst::ICMP_EQ &&
- !IsAnd)
- return Builder.CreateICmpUGE(Base, Offset);
-
return nullptr;
}
More information about the llvm-commits
mailing list