[llvm] r203750 - 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.

Karthik Bhat kv.bhat at samsung.com
Wed Mar 12 21:50:29 PDT 2014


Author: karthik
Date: Wed Mar 12 23:50:29 2014
New Revision: 203750

URL: http://llvm.org/viewvc/llvm-project?rev=203750&view=rev
Log:
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.

Modified:
    llvm/trunk/test/Transforms/ScalarRepl/memset-aggregate-byte-leader.ll
    llvm/trunk/test/Transforms/ScalarRepl/vector_memcpy.ll

Modified: llvm/trunk/test/Transforms/ScalarRepl/memset-aggregate-byte-leader.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/ScalarRepl/memset-aggregate-byte-leader.ll?rev=203750&r1=203749&r2=203750&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/ScalarRepl/memset-aggregate-byte-leader.ll (original)
+++ llvm/trunk/test/Transforms/ScalarRepl/memset-aggregate-byte-leader.ll Wed Mar 12 23:50:29 2014
@@ -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)

Modified: llvm/trunk/test/Transforms/ScalarRepl/vector_memcpy.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/ScalarRepl/vector_memcpy.ll?rev=203750&r1=203749&r2=203750&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/ScalarRepl/vector_memcpy.ll (original)
+++ llvm/trunk/test/Transforms/ScalarRepl/vector_memcpy.ll Wed Mar 12 23:50:29 2014
@@ -9,8 +9,7 @@ define <16 x float> @foo(<16 x float> %A
 	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> %
 	%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





More information about the llvm-commits mailing list