[llvm] 7eda63b - [InstCombine] Avoid use of ConstantExpr::getZExt() (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 28 08:13:58 PDT 2023
Author: Nikita Popov
Date: 2023-09-28T17:13:49+02:00
New Revision: 7eda63b8143350eb2cac5c4b9588f75f144bcaea
URL: https://github.com/llvm/llvm-project/commit/7eda63b8143350eb2cac5c4b9588f75f144bcaea
DIFF: https://github.com/llvm/llvm-project/commit/7eda63b8143350eb2cac5c4b9588f75f144bcaea.diff
LOG: [InstCombine] Avoid use of ConstantExpr::getZExt() (NFC)
Check the result of constant folding here, as I'm not confident
that no constant expressions can make it in here.
Added:
Modified:
llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp b/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp
index 75f4b244422819e..a25a7dd4160d24e 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp
@@ -245,7 +245,11 @@ dropRedundantMaskingOfLeftShiftInput(BinaryOperator *OuterShift,
SumOfShAmts = Constant::replaceUndefsWith(
SumOfShAmts, ConstantInt::get(SumOfShAmts->getType()->getScalarType(),
ExtendedTy->getScalarSizeInBits()));
- auto *ExtendedSumOfShAmts = ConstantExpr::getZExt(SumOfShAmts, ExtendedTy);
+ auto *ExtendedSumOfShAmts = ConstantFoldCastOperand(
+ Instruction::ZExt, SumOfShAmts, ExtendedTy, Q.DL);
+ if (!ExtendedSumOfShAmts)
+ return nullptr;
+
// And compute the mask as usual: ~(-1 << (SumOfShAmts))
auto *ExtendedAllOnes = ConstantExpr::getAllOnesValue(ExtendedTy);
auto *ExtendedInvertedMask =
@@ -278,12 +282,16 @@ dropRedundantMaskingOfLeftShiftInput(BinaryOperator *OuterShift,
ShAmtsDiff = Constant::replaceUndefsWith(
ShAmtsDiff, ConstantInt::get(ShAmtsDiff->getType()->getScalarType(),
-WidestTyBitWidth));
- auto *ExtendedNumHighBitsToClear = ConstantExpr::getZExt(
+ auto *ExtendedNumHighBitsToClear = ConstantFoldCastOperand(
+ Instruction::ZExt,
ConstantExpr::getSub(ConstantInt::get(ShAmtsDiff->getType(),
WidestTyBitWidth,
/*isSigned=*/false),
ShAmtsDiff),
- ExtendedTy);
+ ExtendedTy, Q.DL);
+ if (!ExtendedNumHighBitsToClear)
+ return nullptr;
+
// And compute the mask as usual: (-1 l>> (NumHighBitsToClear))
auto *ExtendedAllOnes = ConstantExpr::getAllOnesValue(ExtendedTy);
NewMask =
More information about the llvm-commits
mailing list