From aba02efc6c6441eddd72388638f70cbb17e39b96 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Wed, 6 Sep 2017 06:50:03 +0000 Subject: [PATCH] [DAGCombiner] When combining EXTRACT_SUBVECTOR of a BUILD_VECTOR, make sure we don't create a BUILD_VECTOR with an illegal type after type legalization. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312621 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index ae923e8ac07..c068e1df836 100644 --- a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -15180,8 +15180,9 @@ SDValue DAGCombiner::visitEXTRACT_SUBVECTOR(SDNode* N) { unsigned NumElems = ExtractSize / EltSize; EVT ExtractVT = EVT::getVectorVT(*DAG.getContext(), InVT.getVectorElementType(), NumElems); - if (!LegalOperations || - TLI.isOperationLegal(ISD::BUILD_VECTOR, ExtractVT)) { + if ((!LegalOperations || + TLI.isOperationLegal(ISD::BUILD_VECTOR, ExtractVT)) && + (!LegalTypes || TLI.isTypeLegal(ExtractVT))) { unsigned IdxVal = (Idx->getZExtValue() * NVT.getScalarSizeInBits()) / EltSize; -- 2.50.1