Fix PR5563, an expensive checks failure when running on
authorDuncan Sands <baldrick@free.fr>
Fri, 20 Nov 2009 13:19:51 +0000 (13:19 +0000)
committerDuncan Sands <baldrick@free.fr>
Fri, 20 Nov 2009 13:19:51 +0000 (13:19 +0000)
tests/Transforms/InstCombine/shufflemask-undef.ll.  If
anyone cares, the use of 2*e here (and the equivalent
all over the place in instcombine) seems wrong, though
harmless: it should really be twice the length of the
input vector.  I think shufflevector used to require
that the mask have the same length as the input, but I
don't think that's true any more.  I don't care enough
about vectors to do anything about this...

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

lib/Transforms/Scalar/InstructionCombining.cpp

index 1c48366e89fbbdc7818ce6f581a8247b699a91d7..6f74902e1b42c4403a763df302a2725b1344a0bc 100644 (file)
@@ -12920,7 +12920,7 @@ Instruction *InstCombiner::visitShuffleVectorInst(ShuffleVectorInst &SVI) {
       if (LHSMask.size() == Mask.size()) {
         std::vector<unsigned> NewMask;
         for (unsigned i = 0, e = Mask.size(); i != e; ++i)
-          if (Mask[i] >= 2*e)
+          if (Mask[i] >= e)
             NewMask.push_back(2*e);
           else
             NewMask.push_back(LHSMask[Mask[i]]);