[llvm] 9ace23c - [InstCombine] Avoid use of ConstantExpr::getSExt() (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 2 02:30:34 PDT 2023
Author: Nikita Popov
Date: 2023-10-02T11:30:15+02:00
New Revision: 9ace23c9a20f82758288b5b99a8a82b36e97bdc5
URL: https://github.com/llvm/llvm-project/commit/9ace23c9a20f82758288b5b99a8a82b36e97bdc5
DIFF: https://github.com/llvm/llvm-project/commit/9ace23c9a20f82758288b5b99a8a82b36e97bdc5.diff
LOG: [InstCombine] Avoid use of ConstantExpr::getSExt() (NFC)
Use the constant folding API instead.
Added:
Modified:
llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
index 951492cc150f304..20c13de33f8189d 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
@@ -1445,9 +1445,11 @@ Instruction *InstCombinerImpl::visitSExt(SExtInst &Sext) {
// TODO: Eventually this could be subsumed by EvaluateInDifferentType.
Constant *BA = nullptr, *CA = nullptr;
if (match(Src, m_AShr(m_Shl(m_Trunc(m_Value(A)), m_Constant(BA)),
- m_Constant(CA))) &&
+ m_ImmConstant(CA))) &&
BA->isElementWiseEqual(CA) && A->getType() == DestTy) {
- Constant *WideCurrShAmt = ConstantExpr::getSExt(CA, DestTy);
+ Constant *WideCurrShAmt =
+ ConstantFoldCastOperand(Instruction::SExt, CA, DestTy, DL);
+ assert(WideCurrShAmt && "Constant folding of ImmConstant cannot fail");
Constant *NumLowbitsLeft = ConstantExpr::getSub(
ConstantInt::get(DestTy, SrcTy->getScalarSizeInBits()), WideCurrShAmt);
Constant *NewShAmt = ConstantExpr::getSub(
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp b/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
index c42164da8aee1ab..7a15c0dee492b5a 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
@@ -1495,8 +1495,13 @@ static Value *canonicalizeClampLike(SelectInst &Sel0, ICmpInst &Cmp0,
if (!match(ReplacementLow, m_ImmConstant(LowC)) ||
!match(ReplacementHigh, m_ImmConstant(HighC)))
return nullptr;
- ReplacementLow = ConstantExpr::getSExt(LowC, X->getType());
- ReplacementHigh = ConstantExpr::getSExt(HighC, X->getType());
+ const DataLayout &DL = Sel0.getModule()->getDataLayout();
+ ReplacementLow =
+ ConstantFoldCastOperand(Instruction::SExt, LowC, X->getType(), DL);
+ ReplacementHigh =
+ ConstantFoldCastOperand(Instruction::SExt, HighC, X->getType(), DL);
+ assert(ReplacementLow && ReplacementHigh &&
+ "Constant folding of ImmConstant cannot fail");
}
// All good, finally emit the new pattern.
More information about the llvm-commits
mailing list