mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
[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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234046 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bd2c26b992
commit
701c2fca7e
@ -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
Block a user