]> granicus.if.org Git - llvm/commitdiff
[DAGCombiner] Prevent the combine added in r367710 from creating illegal types after...
authorCraig Topper <craig.topper@intel.com>
Sat, 3 Aug 2019 23:09:13 +0000 (23:09 +0000)
committerCraig Topper <craig.topper@intel.com>
Sat, 3 Aug 2019 23:09:13 +0000 (23:09 +0000)
This is further fix for PR42880.

Sanjay already disabled the X86 TLI hook for non-simple types,
but we should really call isTypeLegal here if we're after type
legalization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@367768 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/DAGCombiner.cpp

index 656334b3dbad09316360cdff1dc7684ed6e37824..f6b021c8fd1b3b304dd3bc709cc35991ec8afa93 100644 (file)
@@ -7631,7 +7631,7 @@ SDValue DAGCombiner::visitSRA(SDNode *N) {
       EVT TruncVT = EVT::getIntegerVT(Ctx, OpSizeInBits - ShiftAmt);
       if (VT.isVector())
         TruncVT = EVT::getVectorVT(Ctx, TruncVT, VT.getVectorNumElements());
-      if (TLI.isTruncateFree(VT, TruncVT)) {
+      if (isTypeLegal(TruncVT) && TLI.isTruncateFree(VT, TruncVT)) {
         SDLoc DL(N);
         SDValue Trunc = DAG.getZExtOrTrunc(Shl.getOperand(0), DL, TruncVT);
         SDValue ShiftC = DAG.getConstant(AddC->getAPIntValue().lshr(ShiftAmt).