llvm.org GIT mirror llvm / 178df3f
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 Karthik Bhat 5 years ago
2 changed file(s) with 7 addition(s) and 9 deletion(s). Raw diff Collapse all Expand all
0 ; PR1226
11 ; RUN: opt < %s -scalarrepl -S | \
2 ; RUN: not grep "call void @llvm.memcpy.i32"
2 ; RUN: not grep "call void @llvm.memcpy.p0i8.p0i8.i32"
33 ; RUN: opt < %s -scalarrepl -S | grep getelementptr
44 ; END.
55
1313 %L = alloca %struct.foo, align 2 ; <%struct.foo*> [#uses=1]
1414 %L2 = getelementptr %struct.foo* %L, i32 0, i32 0 ; [#uses=2]
1515 %tmp13 = getelementptr %struct.foo* %P, i32 0, i32 0 ; [#uses=1]
16 call void @llvm.memcpy.i32( i8* %L2, i8* %tmp13, i32 2, i32 1 )
16 call void @llvm.memcpy.p0i8.p0i8.i32( i8* %L2, i8* %tmp13, i32 2, i32 1, i1 false)
1717 %tmp5 = load i8* %L2 ; [#uses=1]
1818 %tmp56 = sext i8 %tmp5 to i32 ; [#uses=1]
1919 ret i32 %tmp56
2020 }
2121
22 declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)
22 declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1)
88 store <16 x float> %A, <16 x float>* %tmp
99 %s = bitcast <16 x float>* %tmp to i8*
1010 %s2 = bitcast <16 x float>* %tmp2 to i8*
11 call void @llvm.memcpy.i64(i8* %s2, i8* %s, i64 64, i32 16)
12
11 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %s2, i8* %s, i64 64, i32 16, i1 false)
1312 %R = load <16 x float>* %tmp2
1413 ret <16 x float> %R
1514 }
1817 %tmp2 = alloca <16 x float>, align 16
1918
2019 %s2 = bitcast <16 x float>* %tmp2 to i8*
21 call void @llvm.memset.i64(i8* %s2, i8 0, i64 64, i32 16)
20 call void @llvm.memset.p0i8.i64(i8* %s2, i8 0, i64 64, i32 16, i1 false)
2221
2322 %R = load <16 x float>* %tmp2
2423 ret <16 x float> %R
2524 }
2625
27
28 declare void @llvm.memcpy.i64(i8* nocapture, i8* nocapture, i64, i32) nounwind
29 declare void @llvm.memset.i64(i8* nocapture, i8, i64, i32) nounwind
26 declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind
27 declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind