add a new random feature test
authorChris Lattner <sabre@nondot.org>
Thu, 26 Nov 2009 02:16:28 +0000 (02:16 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 26 Nov 2009 02:16:28 +0000 (02:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89921 91177308-0d34-0410-b5e6-96231b3b80d8

test/Analysis/BasicAA/modref.ll

index c03014dfe14d8f42662dc865e0a113b8f59e05d0..3f642cff195ca8d8693695df85a0cbf19f37dcb7 100644 (file)
@@ -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
+}
+