OSDN Git Service

[SelectionDAG] Add a check to getVectorShuffle to ensure that the only negative index...
authorCraig Topper <craig.topper@intel.com>
Thu, 19 Oct 2017 20:59:41 +0000 (20:59 +0000)
committerCraig Topper <craig.topper@intel.com>
Thu, 19 Oct 2017 20:59:41 +0000 (20:59 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316183 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/SelectionDAG.cpp

index 0d99998..4b0a5e0 100644 (file)
@@ -1486,7 +1486,8 @@ SDValue SelectionDAG::getVectorShuffle(EVT VT, const SDLoc &dl, SDValue N1,
   // Validate that all indices in Mask are within the range of the elements
   // input to the shuffle.
   int NElts = Mask.size();
-  assert(llvm::all_of(Mask, [&](int M) { return M < (NElts * 2); }) &&
+  assert(llvm::all_of(Mask,
+                      [&](int M) { return M < (NElts * 2) && M >= -1; }) &&
          "Index out of range");
 
   // Copy the mask so we can do any needed cleanup.