mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-28 06:32:09 +00:00
Fix PR18800. llvm intrinsic memcpy takes 5 arguments void @llvm.memcpy.p0i8.p0i8.i32(i8* <dest>, i8* <src>, i32 <len>, i32 <align>, i1 <isvolatile>).The test case incorrectly uses the old format resulting in isVolatile function in MemIntrinsic to crash during SROA transformation.Modified the test case to use correct signature of memcpy and memset.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203750 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0e8c89ae8f
commit
178df3f1bb
@ -1,6 +1,6 @@
|
||||
; PR1226
|
||||
; RUN: opt < %s -scalarrepl -S | \
|
||||
; RUN: not grep "call void @llvm.memcpy.i32"
|
||||
; RUN: not grep "call void @llvm.memcpy.p0i8.p0i8.i32"
|
||||
; RUN: opt < %s -scalarrepl -S | grep getelementptr
|
||||
; END.
|
||||
|
||||
@ -14,10 +14,10 @@ entry:
|
||||
%L = alloca %struct.foo, align 2 ; <%struct.foo*> [#uses=1]
|
||||
%L2 = getelementptr %struct.foo* %L, i32 0, i32 0 ; <i8*> [#uses=2]
|
||||
%tmp13 = getelementptr %struct.foo* %P, i32 0, i32 0 ; <i8*> [#uses=1]
|
||||
call void @llvm.memcpy.i32( i8* %L2, i8* %tmp13, i32 2, i32 1 )
|
||||
call void @llvm.memcpy.p0i8.p0i8.i32( i8* %L2, i8* %tmp13, i32 2, i32 1, i1 false)
|
||||
%tmp5 = load i8* %L2 ; <i8> [#uses=1]
|
||||
%tmp56 = sext i8 %tmp5 to i32 ; <i32> [#uses=1]
|
||||
ret i32 %tmp56
|
||||
}
|
||||
|
||||
declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)
|
||||
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1)
|
||||
|
@ -9,8 +9,7 @@ define <16 x float> @foo(<16 x float> %A) nounwind {
|
||||
store <16 x float> %A, <16 x float>* %tmp
|
||||
%s = bitcast <16 x float>* %tmp to i8*
|
||||
%s2 = bitcast <16 x float>* %tmp2 to i8*
|
||||
call void @llvm.memcpy.i64(i8* %s2, i8* %s, i64 64, i32 16)
|
||||
|
||||
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %s2, i8* %s, i64 64, i32 16, i1 false)
|
||||
%R = load <16 x float>* %tmp2
|
||||
ret <16 x float> %R
|
||||
}
|
||||
@ -19,12 +18,11 @@ define <16 x float> @foo2(<16 x float> %A) nounwind {
|
||||
%tmp2 = alloca <16 x float>, align 16
|
||||
|
||||
%s2 = bitcast <16 x float>* %tmp2 to i8*
|
||||
call void @llvm.memset.i64(i8* %s2, i8 0, i64 64, i32 16)
|
||||
call void @llvm.memset.p0i8.i64(i8* %s2, i8 0, i64 64, i32 16, i1 false)
|
||||
|
||||
%R = load <16 x float>* %tmp2
|
||||
ret <16 x float> %R
|
||||
}
|
||||
|
||||
|
||||
declare void @llvm.memcpy.i64(i8* nocapture, i8* nocapture, i64, i32) nounwind
|
||||
declare void @llvm.memset.i64(i8* nocapture, i8, i64, i32) nounwind
|
||||
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind
|
||||
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
|
||||
|
Loading…
x
Reference in New Issue
Block a user