diff options
author | Chris Lattner <sabre@nondot.org> | 2009-11-26 02:16:28 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-11-26 02:16:28 +0000 |
commit | 01526336b664739e81f2e14d8a6792dee2e2f619 (patch) | |
tree | a05993db57a6dcc0b37916eb1f79f54061aa7ea8 /test/Analysis/BasicAA | |
parent | 3c689d61206a26a2ec7e5f8ba5ca4d8f67f411e8 (diff) | |
download | external_llvm-01526336b664739e81f2e14d8a6792dee2e2f619.zip external_llvm-01526336b664739e81f2e14d8a6792dee2e2f619.tar.gz external_llvm-01526336b664739e81f2e14d8a6792dee2e2f619.tar.bz2 |
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/Analysis/BasicAA')
-rw-r--r-- | test/Analysis/BasicAA/modref.ll | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/test/Analysis/BasicAA/modref.ll b/test/Analysis/BasicAA/modref.ll index c03014d..3f642cf 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 +} + |