summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-11-26 02:16:28 +0000
committerChris Lattner <sabre@nondot.org>2009-11-26 02:16:28 +0000
commit4b7d0d97279c3144bd36160721fc4a8b4ff198f5 (patch)
treea05993db57a6dcc0b37916eb1f79f54061aa7ea8 /test
parent23e2a5b2fff8b5b483a464ce1bea9a686e6731de (diff)
downloadllvm-4b7d0d97279c3144bd36160721fc4a8b4ff198f5.tar.gz
llvm-4b7d0d97279c3144bd36160721fc4a8b4ff198f5.tar.bz2
llvm-4b7d0d97279c3144bd36160721fc4a8b4ff198f5.tar.xz
add a new random feature test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89921 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/Analysis/BasicAA/modref.ll18
1 files changed, 17 insertions, 1 deletions
diff --git a/test/Analysis/BasicAA/modref.ll b/test/Analysis/BasicAA/modref.ll
index c03014dfe1..3f642cff19 100644
--- a/test/Analysis/BasicAA/modref.ll
+++ b/test/Analysis/BasicAA/modref.ll
@@ -4,6 +4,7 @@ target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:1
declare void @llvm.memset.i32(i8*, i8, i32, i32)
declare void @llvm.memset.i8(i8*, i8, i8, i32)
declare void @llvm.memcpy.i8(i8*, i8*, i8, i32)
+declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)
declare void @llvm.lifetime.end(i64, i8* nocapture)
declare void @external(i32*)
@@ -94,7 +95,7 @@ define void @test3a(i8* %P, i8 %X) {
@G1 = external global i32
@G2 = external global [4000 x i32]
-define i32 @test4(i8* %P, i8 %X) {
+define i32 @test4(i8* %P) {
%tmp = load i32* @G1
call void @llvm.memset.i32(i8* bitcast ([4000 x i32]* @G2 to i8*), i8 0, i32 4000, i32 1)
%tmp2 = load i32* @G1
@@ -107,3 +108,18 @@ define i32 @test4(i8* %P, i8 %X) {
; CHECK: sub i32 %tmp, %tmp
}
+; Verify that basicaa is handling variable length memcpy, knowing it doesn't
+; write to G1.
+define i32 @test5(i8* %P, i32 %Len) {
+ %tmp = load i32* @G1
+ call void @llvm.memcpy.i32(i8* bitcast ([4000 x i32]* @G2 to i8*), i8* bitcast (i32* @G1 to i8*), i32 %Len, i32 1)
+ %tmp2 = load i32* @G1
+ %sub = sub i32 %tmp2, %tmp
+ ret i32 %sub
+; CHECK: @test5
+; CHECK: load i32* @G
+; CHECK: memcpy.i32
+; CHECK-NOT: load
+; CHECK: sub i32 %tmp, %tmp
+}
+