mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-26 05:00:26 +00:00
Relax an overly aggressive assert to fix PR14572.
The alloca width is based on the alloc size, not the type size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170270 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5db4bceb47
commit
19820053fe
@ -2607,7 +2607,7 @@ private:
|
||||
TD.getTypeStoreSizeInBits(V->getType()) &&
|
||||
"Non-byte-multiple bit width");
|
||||
assert(V->getType()->getIntegerBitWidth() ==
|
||||
TD.getTypeSizeInBits(OldAI.getAllocatedType()) &&
|
||||
TD.getTypeAllocSizeInBits(OldAI.getAllocatedType()) &&
|
||||
"Only alloca-wide stores can be split and recomposed");
|
||||
IntegerType *NarrowTy = Type::getIntNTy(SI.getContext(), Size * 8);
|
||||
V = extractInteger(TD, IRB, V, NarrowTy, BeginOffset,
|
||||
|
@ -1176,3 +1176,19 @@ entry:
|
||||
%baz = load i1* %a.i1, align 1
|
||||
ret void
|
||||
}
|
||||
|
||||
define <3 x i8> @PR14572(i32 %x) {
|
||||
; Ensure that a split integer store which is wider than the type size of the
|
||||
; alloca (relying on the alloc size padding) doesn't trigger an assert.
|
||||
; CHECK: @PR14572
|
||||
|
||||
entry:
|
||||
%a = alloca <3 x i8>, align 4
|
||||
; CHECK-NOT: alloca
|
||||
|
||||
%cast = bitcast <3 x i8>* %a to i32*
|
||||
store i32 %x, i32* %cast, align 1
|
||||
%y = load <3 x i8>* %a, align 4
|
||||
ret <3 x i8> %y
|
||||
; CHECK: ret <3 x i8>
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user