forked from OSchip/llvm-project
[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. llvm-svn: 234046
This commit is contained in:
parent
a12eb15f1d
commit
98cfe2b7a5
|
@ -987,8 +987,7 @@ Instruction *InstCombiner::visitShuffleVectorInst(ShuffleVectorInst &SVI) {
|
|||
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::visitShuffleVectorInst(ShuffleVectorInst &SVI) {
|
|||
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;
|
||||
|
|
|
@ -414,3 +414,11 @@ define <4 x i32> @pr20114(<4 x i32> %__mask) {
|
|||
%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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue