]> granicus.if.org Git - llvm/commitdiff
[DAGCombine] Bail out if can't create a vector with at least two elements
authorZvi Rackover <zvi.rackover@intel.com>
Wed, 15 Mar 2017 19:48:36 +0000 (19:48 +0000)
committerZvi Rackover <zvi.rackover@intel.com>
Wed, 15 Mar 2017 19:48:36 +0000 (19:48 +0000)
Summary:

Fixes pr32278

Reviewers: igorb, craig.topper, RKSimon, spatel, hfinkel

Reviewed By: RKSimon

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D30978

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

lib/CodeGen/SelectionDAG/DAGCombiner.cpp
test/CodeGen/Generic/pr32278.ll

index 0fe1edad7fc059587260ecb439d32864fe94ce84..2d6739ce085cb79469ad93f82921bc68f6c57ef9 100644 (file)
@@ -14098,8 +14098,11 @@ SDValue DAGCombiner::visitCONCAT_VECTORS(SDNode *N) {
       if (!SclTy.isFloatingPoint() && !SclTy.isInteger())
         return SDValue();
 
-      EVT NVT = EVT::getVectorVT(*DAG.getContext(), SclTy,
-                                 VT.getSizeInBits() / SclTy.getSizeInBits());
+      unsigned VNTNumElms = VT.getSizeInBits() / SclTy.getSizeInBits();
+      if (VNTNumElms < 2)
+        return SDValue();
+
+      EVT NVT = EVT::getVectorVT(*DAG.getContext(), SclTy, VNTNumElms);
       if (!TLI.isTypeLegal(NVT) || !TLI.isTypeLegal(Scalar.getValueType()))
         return SDValue();
 
index fc1f73c86ffe9ddcf3403faadc8287d13ac897dd..175b8043126a9931397d4a9654e50b35167cd532 100644 (file)
@@ -1,6 +1,4 @@
 ; PR32278
-; XFAIL: *
-; REQUIRES: asserts
 
 ; RUN: llc < %s