From faa90eca63e8da0a5c539b616fee0734ddb3b453 Mon Sep 17 00:00:00 2001 From: Roman Lebedev Date: Mon, 30 Sep 2019 19:16:00 +0000 Subject: [PATCH] [InstCombine][NFC] visitShl(): call SimplifyQuery::getWithInstruction() once llvm-svn: 373249 --- .../InstCombine/InstCombineShifts.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp b/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp index ab1e484df93e3..bc4affbecdfa3 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp @@ -131,7 +131,7 @@ reassociateShiftAmtsOfTwoSameDirectionShifts(BinaryOperator *Sh0, // c,d,e,f) (ShiftShAmt-MaskShAmt) s>= 0 (i.e. ShiftShAmt u>= MaskShAmt) static Instruction * dropRedundantMaskingOfLeftShiftInput(BinaryOperator *OuterShift, - const SimplifyQuery &SQ, + const SimplifyQuery &Q, InstCombiner::BuilderTy &Builder) { assert(OuterShift->getOpcode() == Instruction::BinaryOps::Shl && "The input must be 'shl'!"); @@ -155,9 +155,8 @@ dropRedundantMaskingOfLeftShiftInput(BinaryOperator *OuterShift, Constant *NewMask; if (match(Masked, m_c_And(m_CombineOr(MaskA, MaskB), m_Value(X)))) { // Can we simplify (MaskShAmt+ShiftShAmt) ? - auto *SumOfShAmts = dyn_cast_or_null( - SimplifyAddInst(MaskShAmt, ShiftShAmt, /*IsNSW=*/false, /*IsNUW=*/false, - SQ.getWithInstruction(OuterShift))); + auto *SumOfShAmts = dyn_cast_or_null(SimplifyAddInst( + MaskShAmt, ShiftShAmt, /*IsNSW=*/false, /*IsNUW=*/false, Q)); if (!SumOfShAmts) return nullptr; // Did not simplify. Type *Ty = X->getType(); @@ -189,9 +188,8 @@ dropRedundantMaskingOfLeftShiftInput(BinaryOperator *OuterShift, match(Masked, m_Shr(m_Shl(m_Value(X), m_Value(MaskShAmt)), m_Deferred(MaskShAmt)))) { // Can we simplify (ShiftShAmt-MaskShAmt) ? - auto *ShAmtsDiff = dyn_cast_or_null( - SimplifySubInst(ShiftShAmt, MaskShAmt, /*IsNSW=*/false, /*IsNUW=*/false, - SQ.getWithInstruction(OuterShift))); + auto *ShAmtsDiff = dyn_cast_or_null(SimplifySubInst( + ShiftShAmt, MaskShAmt, /*IsNSW=*/false, /*IsNUW=*/false, Q)); if (!ShAmtsDiff) return nullptr; // Did not simplify. // In this pattern ShAmtsDiff correlates with the number of high bits that @@ -797,9 +795,10 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, Constant *Op1, } Instruction *InstCombiner::visitShl(BinaryOperator &I) { + const SimplifyQuery Q = SQ.getWithInstruction(&I); + if (Value *V = SimplifyShlInst(I.getOperand(0), I.getOperand(1), - I.hasNoSignedWrap(), I.hasNoUnsignedWrap(), - SQ.getWithInstruction(&I))) + I.hasNoSignedWrap(), I.hasNoUnsignedWrap(), Q)) return replaceInstUsesWith(I, V); if (Instruction *X = foldVectorBinop(I)) @@ -808,7 +807,7 @@ Instruction *InstCombiner::visitShl(BinaryOperator &I) { if (Instruction *V = commonShiftTransforms(I)) return V; - if (Instruction *V = dropRedundantMaskingOfLeftShiftInput(&I, SQ, Builder)) + if (Instruction *V = dropRedundantMaskingOfLeftShiftInput(&I, Q, Builder)) return V; Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);