]> granicus.if.org Git - llvm/commitdiff
[DAGCombiner] In visitINSERT_VECTOR_ELT, move check for BUILD_VECTOR being legal...
authorCraig Topper <craig.topper@gmail.com>
Sat, 4 Feb 2017 23:26:34 +0000 (23:26 +0000)
committerCraig Topper <craig.topper@gmail.com>
Sat, 4 Feb 2017 23:26:34 +0000 (23:26 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294108 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/DAGCombiner.cpp

index b4a04ccbe6256379339061659605a1b96e9d077c..8a85feba1c44bca0e8d28dee8d7af7da4de446ea 100644 (file)
@@ -12777,10 +12777,6 @@ SDValue DAGCombiner::visitINSERT_VECTOR_ELT(SDNode *N) {
 
   EVT VT = InVec.getValueType();
 
-  // If we can't generate a legal BUILD_VECTOR, exit
-  if (LegalOperations && !TLI.isOperationLegal(ISD::BUILD_VECTOR, VT))
-    return SDValue();
-
   // Check that we know which element is being inserted
   if (!isa<ConstantSDNode>(EltNo))
     return SDValue();
@@ -12807,6 +12803,10 @@ SDValue DAGCombiner::visitINSERT_VECTOR_ELT(SDNode *N) {
     }
   }
 
+  // If we can't generate a legal BUILD_VECTOR, exit
+  if (LegalOperations && !TLI.isOperationLegal(ISD::BUILD_VECTOR, VT))
+    return SDValue();
+
   // Check that the operand is a BUILD_VECTOR (or UNDEF, which can essentially
   // be converted to a BUILD_VECTOR).  Fill in the Ops vector with the
   // vector elements.