diff options
Diffstat (limited to 'test/Transforms')
-rw-r--r-- | test/Transforms/InstCombine/memset_chk.ll (renamed from test/Transforms/SimplifyLibCalls/memset_chk.ll) | 2 | ||||
-rw-r--r-- | test/Transforms/InstCombine/objsize.ll | 20 | ||||
-rw-r--r-- | test/Transforms/InstCombine/strcpy_chk.ll (renamed from test/Transforms/SimplifyLibCalls/strcpy_chk.ll) | 2 | ||||
-rw-r--r-- | test/Transforms/LCSSA/unreachable-use.ll | 27 |
4 files changed, 47 insertions, 4 deletions
diff --git a/test/Transforms/SimplifyLibCalls/memset_chk.ll b/test/Transforms/InstCombine/memset_chk.ll index c4ef60e..5a4e6d9 100644 --- a/test/Transforms/SimplifyLibCalls/memset_chk.ll +++ b/test/Transforms/InstCombine/memset_chk.ll @@ -1,4 +1,4 @@ -; RUN: opt < %s -simplify-libcalls -S | FileCheck %s +; RUN: opt < %s -instcombine -S | FileCheck %s ; rdar://7719085 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" diff --git a/test/Transforms/InstCombine/objsize.ll b/test/Transforms/InstCombine/objsize.ll index bf1a37f..cd7b7c8 100644 --- a/test/Transforms/InstCombine/objsize.ll +++ b/test/Transforms/InstCombine/objsize.ll @@ -91,7 +91,7 @@ bb11: %1 = bitcast float* %0 to i8* ; <i8*> [#uses=1] %2 = call i32 @llvm.objectsize.i32(i8* %1, i1 false) ; <i32> [#uses=1] %3 = call i8* @__memcpy_chk(i8* undef, i8* undef, i32 512, i32 %2) nounwind ; <i8*> [#uses=0] -; CHECK: @__memcpy_chk +; CHECK: unreachable unreachable bb12: @@ -113,13 +113,29 @@ entry: %1 = bitcast %struct.data* %0 to i8* %2 = call i64 @llvm.objectsize.i64(i8* %1, i1 false) nounwind ; CHECK-NOT: @llvm.objectsize -; CHECK: @__memset_chk(i8* %1, i32 0, i64 1824, i64 1824) +; CHECK: @llvm.memset.i64(i8* %1, i8 0, i64 1824, i32 8) %3 = call i8* @__memset_chk(i8* %1, i32 0, i64 1824, i64 %2) nounwind ret i32 0 } +@s = external global i8* + +define void @test5(i32 %n) nounwind ssp { +; CHECK: @test5 +entry: + %0 = tail call noalias i8* @malloc(i32 20) nounwind + %1 = tail call i32 @llvm.objectsize.i32(i8* %0, i1 false) + %2 = load i8** @s, align 8 +; CHECK-NOT: @llvm.objectsize +; CHECK: @__memcpy_chk(i8* %0, i8* %1, i32 10, i32 20) + %3 = tail call i8* @__memcpy_chk(i8* %0, i8* %2, i32 10, i32 %1) nounwind + ret void +} + declare i8* @__memset_chk(i8*, i32, i64, i64) nounwind +declare noalias i8* @malloc(i32) nounwind + declare i32 @llvm.objectsize.i32(i8*, i1) nounwind readonly declare i64 @llvm.objectsize.i64(i8*, i1) nounwind readonly diff --git a/test/Transforms/SimplifyLibCalls/strcpy_chk.ll b/test/Transforms/InstCombine/strcpy_chk.ll index 422cbd9..a20a13c 100644 --- a/test/Transforms/SimplifyLibCalls/strcpy_chk.ll +++ b/test/Transforms/InstCombine/strcpy_chk.ll @@ -1,4 +1,4 @@ -; RUN: opt < %s -simplify-libcalls -S | FileCheck %s +; RUN: opt < %s -instcombine -S | FileCheck %s @a = common global [60 x i8] zeroinitializer, align 1 ; <[60 x i8]*> [#uses=1] @.str = private constant [8 x i8] c"abcdefg\00" ; <[8 x i8]*> [#uses=1] diff --git a/test/Transforms/LCSSA/unreachable-use.ll b/test/Transforms/LCSSA/unreachable-use.ll new file mode 100644 index 0000000..c389c9c --- /dev/null +++ b/test/Transforms/LCSSA/unreachable-use.ll @@ -0,0 +1,27 @@ +; RUN: opt < %s -lcssa -S -verify-loop-info | grep {\[%\]tmp33 = load i1\\*\\* \[%\]tmp} +; PR6546 + +; LCSSA doesn't need to transform uses in blocks not reachable +; from the entry block. + +define fastcc void @dfs() nounwind { +bb: + br label %bb44 + +bb44: + br i1 undef, label %bb7, label %bb45 + +bb7: + %tmp = bitcast i1** undef to i1** + br label %bb15 + +bb15: + br label %bb44 + +bb32: + %tmp33 = load i1** %tmp, align 8 + br label %bb45 + +bb45: + unreachable +} |