From 178df3f1bb3e75a41af58be923852f8d295d5dd4 Mon Sep 17 00:00:00 2001 From: Karthik Bhat Date: Thu, 13 Mar 2014 04:50:29 +0000 Subject: [PATCH] Fix PR18800. llvm intrinsic memcpy takes 5 arguments void @llvm.memcpy.p0i8.p0i8.i32(i8* , i8* , i32 , i32 , i1 ).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 --- .../ScalarRepl/memset-aggregate-byte-leader.ll | 6 +++--- test/Transforms/ScalarRepl/vector_memcpy.ll | 10 ++++------ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/test/Transforms/ScalarRepl/memset-aggregate-byte-leader.ll b/test/Transforms/ScalarRepl/memset-aggregate-byte-leader.ll index 3510dfc24d9..8ac1d2570a1 100644 --- a/test/Transforms/ScalarRepl/memset-aggregate-byte-leader.ll +++ b/test/Transforms/ScalarRepl/memset-aggregate-byte-leader.ll @@ -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 ; [#uses=2] %tmp13 = getelementptr %struct.foo* %P, i32 0, i32 0 ; [#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 ; [#uses=1] %tmp56 = sext i8 %tmp5 to 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) diff --git a/test/Transforms/ScalarRepl/vector_memcpy.ll b/test/Transforms/ScalarRepl/vector_memcpy.ll index 33e8034f573..dfba9e2c807 100644 --- a/test/Transforms/ScalarRepl/vector_memcpy.ll +++ b/test/Transforms/ScalarRepl/vector_memcpy.ll @@ -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