[llvm] r234046 - [InstCombine] Use DataLayout to determine vector element width

David Majnemer david.majnemer at gmail.com
Fri Apr 3 14:19:54 PDT 2015


Already fixed:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20150330/269669.html

On Fri, Apr 3, 2015 at 2:18 PM, Sanjay Patel <spatel at rotateright.com> wrote:

> Hi David,
> CHECK-LABEL cut and paste bug?
>
> On Fri, Apr 3, 2015 at 2:18 PM, David Majnemer <david.majnemer at gmail.com>
> wrote:
>
>> Author: majnemer
>> Date: Fri Apr  3 15:18:40 2015
>> New Revision: 234046
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=234046&view=rev
>> Log:
>> [InstCombine] Use DataLayout to determine vector element width
>>
>> InstCombine didn't realize that it needs to use DataLayout to determine
>> how wide pointers are.  This lead to assertion failures.
>>
>> This fixes PR23113.
>>
>> Modified:
>>     llvm/trunk/lib/Transforms/InstCombine/InstCombineVectorOps.cpp
>>     llvm/trunk/test/Transforms/InstCombine/vec_shuffle.ll
>>
>> Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineVectorOps.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineVectorOps.cpp?rev=234046&r1=234045&r2=234046&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/InstCombine/InstCombineVectorOps.cpp
>> (original)
>> +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineVectorOps.cpp Fri
>> Apr  3 15:18:40 2015
>> @@ -987,8 +987,7 @@ Instruction *InstCombiner::visitShuffleV
>>      unsigned BegIdx = Mask.front();
>>      VectorType *SrcTy = cast<VectorType>(V->getType());
>>      unsigned VecBitWidth = SrcTy->getBitWidth();
>> -    unsigned SrcElemBitWidth =
>> -        SrcTy->getElementType()->getPrimitiveSizeInBits();
>> +    unsigned SrcElemBitWidth =
>> DL.getTypeSizeInBits(SrcTy->getElementType());
>>      assert(SrcElemBitWidth && "vector elements must have a bitwidth");
>>      unsigned SrcNumElems = SrcTy->getNumElements();
>>      SmallVector<BitCastInst *, 8> BCs;
>> @@ -1000,7 +999,7 @@ Instruction *InstCombiner::visitShuffleV
>>            BCs.push_back(BC);
>>      for (BitCastInst *BC : BCs) {
>>        Type *TgtTy = BC->getDestTy();
>> -      unsigned TgtElemBitWidth = TgtTy->getPrimitiveSizeInBits();
>> +      unsigned TgtElemBitWidth = DL.getTypeSizeInBits(TgtTy);
>>        if (!TgtElemBitWidth)
>>          continue;
>>        unsigned TgtNumElems = VecBitWidth / TgtElemBitWidth;
>>
>> Modified: llvm/trunk/test/Transforms/InstCombine/vec_shuffle.ll
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/vec_shuffle.ll?rev=234046&r1=234045&r2=234046&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/test/Transforms/InstCombine/vec_shuffle.ll (original)
>> +++ llvm/trunk/test/Transforms/InstCombine/vec_shuffle.ll Fri Apr  3
>> 15:18:40 2015
>> @@ -414,3 +414,11 @@ define <4 x i32> @pr20114(<4 x i32> %__m
>>    %masked_new.i.i.i = and <4 x i32> bitcast (<2 x i64> <i64 ptrtoint (<4
>> x i32> (<4 x i32>)* @pr20114 to i64), i64 ptrtoint (<4 x i32> (<4 x i32>)*
>> @pr20114 to i64)> to <4 x i32>), %mask01.i
>>    ret <4 x i32> %masked_new.i.i.i
>>  }
>> +
>> +define <2 x i32*> @pr23113(<4 x i32*> %A) {
>> +; CHECK-LABEL: @pr20114
>> +; CHECK: %[[V:.*]] = shufflevector <4 x i32*> %A, <4 x i32*> undef, <2 x
>> i32> <i32 0, i32 1>
>> +; CHECK-NEXT: ret <2 x i32*> %[[V]]
>> +  %1 = shufflevector <4 x i32*> %A, <4 x i32*> undef, <2 x i32> <i32 0,
>> i32 1>
>> +  ret <2 x i32*> %1
>> +}
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150403/26f12169/attachment.html>


More information about the llvm-commits mailing list