From: Roman Lebedev Date: Sun, 18 Aug 2019 12:26:33 +0000 (+0000) Subject: [InstCombine] Cherry-pick NFC cleanups of foldShiftIntoShiftInAnotherHandOfAndInICmp... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=34e84970cc9a1cb843274d4007cae9451f1a4df6;p=llvm [InstCombine] Cherry-pick NFC cleanups of foldShiftIntoShiftInAnotherHandOfAndInICmp() from D66383 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369207 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/InstCombine/InstCombineCompares.cpp b/lib/Transforms/InstCombine/InstCombineCompares.cpp index babbd9df908..620b5563804 100644 --- a/lib/Transforms/InstCombine/InstCombineCompares.cpp +++ b/lib/Transforms/InstCombine/InstCombineCompares.cpp @@ -3321,12 +3321,15 @@ foldShiftIntoShiftInAnotherHandOfAndInICmp(ICmpInst &I, const SimplifyQuery SQ, m_Instruction(MaybeTruncation))))) return nullptr; - Instruction *UntruncatedShift = XShift; - // We potentially looked past 'trunc', but only when matching YShift, // therefore YShift must have the widest type. - Type *WidestTy = YShift->getType(); - assert(XShift->getType() == I.getOperand(0)->getType() && + Instruction *WidestShift = YShift; + // Therefore XShift must have the shallowest type. + // Or they both have identical types if there was no truncation. + Instruction *NarrowestShift = XShift; + + Type *WidestTy = WidestShift->getType(); + assert(NarrowestShift->getType() == I.getOperand(0)->getType() && "We did not look past any shifts while matching XShift though."); bool HadTrunc = WidestTy != I.getOperand(0)->getType(); @@ -3363,7 +3366,7 @@ foldShiftIntoShiftInAnotherHandOfAndInICmp(ICmpInst &I, const SimplifyQuery SQ, // Due to the 'trunc', we will need to widen X. For that either the old // 'trunc' or the shift amt in the non-truncated shift should be one-use. if (!MaybeTruncation->hasOneUse() && - !UntruncatedShift->getOperand(1)->hasOneUse()) + !NarrowestShift->getOperand(1)->hasOneUse()) return nullptr; } }