[llvm] df698a5 - [InstCombine] Avoid some calls to ConstantExpr::get() (NFCI)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 29 07:26:17 PDT 2022
Author: Nikita Popov
Date: 2022-06-29T16:26:02+02:00
New Revision: df698a5762009f4ce77c5f8d136059c78365f270
URL: https://github.com/llvm/llvm-project/commit/df698a5762009f4ce77c5f8d136059c78365f270
DIFF: https://github.com/llvm/llvm-project/commit/df698a5762009f4ce77c5f8d136059c78365f270.diff
LOG: [InstCombine] Avoid some calls to ConstantExpr::get() (NFCI)
Replace some calls to ConstantExpr::get() with IRBuilder APIs
(which will also constant fold if possible).
Added:
Modified:
llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp
llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp b/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp
index d83b073f2d215..f4e2d1239f0f2 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp
@@ -406,7 +406,7 @@ Instruction *InstCombinerImpl::commonShiftTransforms(BinaryOperator &I) {
Constant *C, *C1;
if (match(Op0, m_Constant(C)) &&
match(Op1, m_NUWAdd(m_Value(A), m_Constant(C1)))) {
- Constant *NewC = ConstantExpr::get(I.getOpcode(), C, C1);
+ Value *NewC = Builder.CreateBinOp(I.getOpcode(), C, C1);
return BinaryOperator::Create(I.getOpcode(), NewC, A);
}
@@ -709,8 +709,8 @@ Instruction *InstCombinerImpl::FoldShiftByConstant(Value *Op0, Constant *C1,
Constant *C2;
Value *X;
if (match(Op0, m_BinOp(I.getOpcode(), m_Constant(C2), m_Value(X))))
- return BinaryOperator::Create(I.getOpcode(),
- ConstantExpr::get(I.getOpcode(), C2, C1), X);
+ return BinaryOperator::Create(
+ I.getOpcode(), Builder.CreateBinOp(I.getOpcode(), C2, C1), X);
const APInt *Op1C;
if (!match(C1, m_APInt(Op1C)))
@@ -750,8 +750,8 @@ Instruction *InstCombinerImpl::FoldShiftByConstant(Value *Op0, Constant *C1,
const APInt *Op0C;
if (match(Op0BO->getOperand(1), m_APInt(Op0C))) {
if (canShiftBinOpWithConstantRHS(I, Op0BO)) {
- Constant *NewRHS = ConstantExpr::get(
- I.getOpcode(), cast<Constant>(Op0BO->getOperand(1)), C1);
+ Value *NewRHS =
+ Builder.CreateBinOp(I.getOpcode(), Op0BO->getOperand(1), C1);
Value *NewShift =
Builder.CreateBinOp(I.getOpcode(), Op0BO->getOperand(0), C1);
@@ -779,8 +779,8 @@ Instruction *InstCombinerImpl::FoldShiftByConstant(Value *Op0, Constant *C1,
if (!isa<Constant>(FalseVal) && TBO->getOperand(0) == FalseVal &&
match(TBO->getOperand(1), m_APInt(C)) &&
canShiftBinOpWithConstantRHS(I, TBO)) {
- Constant *NewRHS = ConstantExpr::get(
- I.getOpcode(), cast<Constant>(TBO->getOperand(1)), C1);
+ Value *NewRHS =
+ Builder.CreateBinOp(I.getOpcode(), TBO->getOperand(1), C1);
Value *NewShift = Builder.CreateBinOp(I.getOpcode(), FalseVal, C1);
Value *NewOp = Builder.CreateBinOp(TBO->getOpcode(), NewShift, NewRHS);
@@ -796,8 +796,8 @@ Instruction *InstCombinerImpl::FoldShiftByConstant(Value *Op0, Constant *C1,
if (!isa<Constant>(TrueVal) && FBO->getOperand(0) == TrueVal &&
match(FBO->getOperand(1), m_APInt(C)) &&
canShiftBinOpWithConstantRHS(I, FBO)) {
- Constant *NewRHS = ConstantExpr::get(
- I.getOpcode(), cast<Constant>(FBO->getOperand(1)), C1);
+ Value *NewRHS =
+ Builder.CreateBinOp(I.getOpcode(), FBO->getOperand(1), C1);
Value *NewShift = Builder.CreateBinOp(I.getOpcode(), TrueVal, C1);
Value *NewOp = Builder.CreateBinOp(FBO->getOpcode(), NewShift, NewRHS);
diff --git a/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp b/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
index 59491a8580d57..cfcf37b63d158 100644
--- a/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
@@ -988,8 +988,8 @@ Instruction *InstCombinerImpl::foldBinopOfSextBoolToSelect(BinaryOperator &BO) {
// bo (sext i1 X), C --> select X, (bo -1, C), (bo 0, C)
Constant *Ones = ConstantInt::getAllOnesValue(BO.getType());
Constant *Zero = ConstantInt::getNullValue(BO.getType());
- Constant *TVal = ConstantExpr::get(BO.getOpcode(), Ones, C);
- Constant *FVal = ConstantExpr::get(BO.getOpcode(), Zero, C);
+ Value *TVal = Builder.CreateBinOp(BO.getOpcode(), Ones, C);
+ Value *FVal = Builder.CreateBinOp(BO.getOpcode(), Zero, C);
return SelectInst::Create(X, TVal, FVal);
}
@@ -1020,12 +1020,6 @@ static Value *foldOperationIntoSelectOperand(Instruction &I, Value *SO,
bool ConstIsRHS = isa<Constant>(I.getOperand(1));
Constant *ConstOperand = cast<Constant>(I.getOperand(ConstIsRHS));
- if (auto *SOC = dyn_cast<Constant>(SO)) {
- if (ConstIsRHS)
- return ConstantExpr::get(I.getOpcode(), SOC, ConstOperand);
- return ConstantExpr::get(I.getOpcode(), ConstOperand, SOC);
- }
-
Value *Op0 = SO, *Op1 = ConstOperand;
if (!ConstIsRHS)
std::swap(Op0, Op1);
@@ -1116,12 +1110,6 @@ static Value *foldOperationIntoPhiValue(BinaryOperator *I, Value *InV,
bool ConstIsRHS = isa<Constant>(I->getOperand(1));
Constant *C = cast<Constant>(I->getOperand(ConstIsRHS));
- if (auto *InC = dyn_cast<Constant>(InV)) {
- if (ConstIsRHS)
- return ConstantExpr::get(I->getOpcode(), InC, C);
- return ConstantExpr::get(I->getOpcode(), C, InC);
- }
-
Value *Op0 = InV, *Op1 = C;
if (!ConstIsRHS)
std::swap(Op0, Op1);
More information about the llvm-commits
mailing list