diff options
Diffstat (limited to 'test/Transforms/TailCallElim')
-rw-r--r-- | test/Transforms/TailCallElim/basic.ll | 2 | ||||
-rw-r--r-- | test/Transforms/TailCallElim/dont_reorder_load.ll | 6 | ||||
-rw-r--r-- | test/Transforms/TailCallElim/inf-recursion.ll | 21 | ||||
-rw-r--r-- | test/Transforms/TailCallElim/reorder_load.ll | 20 |
4 files changed, 35 insertions, 14 deletions
diff --git a/test/Transforms/TailCallElim/basic.ll b/test/Transforms/TailCallElim/basic.ll index 8e9814b..2488b55 100644 --- a/test/Transforms/TailCallElim/basic.ll +++ b/test/Transforms/TailCallElim/basic.ll @@ -183,7 +183,7 @@ define void @test11() { %a = alloca i8* %b = alloca i8 call void @test11_helper1(i8** %a, i8* %b) ; a = &b - %c = load i8** %a + %c = load i8*, i8** %a call void @test11_helper2(i8* %c) ; CHECK: call void @test11_helper2 ret void diff --git a/test/Transforms/TailCallElim/dont_reorder_load.ll b/test/Transforms/TailCallElim/dont_reorder_load.ll index a29b72e..ac399a1 100644 --- a/test/Transforms/TailCallElim/dont_reorder_load.ll +++ b/test/Transforms/TailCallElim/dont_reorder_load.ll @@ -21,7 +21,7 @@ if: ; preds = %entry else: ; preds = %entry %tmp7 = add i32 %start_arg, 1 ; <i32> [#uses=1] %tmp8 = call fastcc i32 @no_tailrecelim_1(i32* %a_arg, i32 %a_len_arg, i32 %tmp7) ; <i32> [#uses=1] - %tmp9 = load i32* @extern_weak_global ; <i32> [#uses=1] + %tmp9 = load i32, i32* @extern_weak_global ; <i32> [#uses=1] %tmp10 = add i32 %tmp9, %tmp8 ; <i32> [#uses=1] ret i32 %tmp10 } @@ -40,7 +40,7 @@ if: ; preds = %entry else: ; preds = %entry %tmp7 = add i32 %start_arg, 1 ; <i32> [#uses=1] %tmp8 = call fastcc i32 @no_tailrecelim_2(i32* %a_arg, i32 %a_len_arg, i32 %tmp7) ; <i32> [#uses=1] - %tmp9 = load i32* %a_arg ; <i32> [#uses=1] + %tmp9 = load i32, i32* %a_arg ; <i32> [#uses=1] %tmp10 = add i32 %tmp9, %tmp8 ; <i32> [#uses=1] ret i32 %tmp10 } @@ -58,7 +58,7 @@ if: ; preds = %entry else: ; preds = %entry %tmp7 = add i32 %start_arg, 1 ; <i32> [#uses=1] %tmp8 = call fastcc i32 @no_tailrecelim_3(i32* %a_arg, i32 %a_len_arg, i32 %tmp7) ; <i32> [#uses=1] - %tmp9 = load volatile i32* %a_arg ; <i32> [#uses=1] + %tmp9 = load volatile i32, i32* %a_arg ; <i32> [#uses=1] %tmp10 = add i32 %tmp9, %tmp8 ; <i32> [#uses=1] ret i32 %tmp10 } diff --git a/test/Transforms/TailCallElim/inf-recursion.ll b/test/Transforms/TailCallElim/inf-recursion.ll index 157226f..c121c25 100644 --- a/test/Transforms/TailCallElim/inf-recursion.ll +++ b/test/Transforms/TailCallElim/inf-recursion.ll @@ -31,3 +31,24 @@ define float @fabsf(float %f) { } declare x86_fp80 @fabsl(x86_fp80 %f) + +; Don't crash while transforming a function with infinite recursion. +define i32 @PR22704(i1 %bool) { +entry: + br i1 %bool, label %t, label %f + +t: + %call1 = call i32 @PR22704(i1 1) + br label %return + +f: + %call = call i32 @PR22704(i1 1) + br label %return + +return: + ret i32 0 + +; CHECK-LABEL: @PR22704( +; CHECK: %bool.tr = phi i1 [ %bool, %entry ], [ true, %t ], [ true, %f ] +; CHECK: br i1 %bool.tr, label %t, label %f +} diff --git a/test/Transforms/TailCallElim/reorder_load.ll b/test/Transforms/TailCallElim/reorder_load.ll index 2e350d6..b989bbf 100644 --- a/test/Transforms/TailCallElim/reorder_load.ll +++ b/test/Transforms/TailCallElim/reorder_load.ll @@ -16,7 +16,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" define fastcc i32 @raise_load_1(i32* %a_arg, i32 %a_len_arg, i32 %start_arg) nounwind readonly { ; CHECK-LABEL: @raise_load_1( ; CHECK-NOT: call -; CHECK: load i32* +; CHECK: load i32, i32* ; CHECK-NOT: call ; CHECK: } entry: @@ -29,7 +29,7 @@ if: ; preds = %entry else: ; preds = %entry %tmp7 = add i32 %start_arg, 1 ; <i32> [#uses=1] %tmp8 = call fastcc i32 @raise_load_1(i32* %a_arg, i32 %a_len_arg, i32 %tmp7) ; <i32> [#uses=1] - %tmp9 = load i32* %a_arg ; <i32> [#uses=1] + %tmp9 = load i32, i32* %a_arg ; <i32> [#uses=1] %tmp10 = add i32 %tmp9, %tmp8 ; <i32> [#uses=1] ret i32 %tmp10 } @@ -40,7 +40,7 @@ else: ; preds = %entry define fastcc i32 @raise_load_2(i32* %a_arg, i32 %a_len_arg, i32 %start_arg) readonly { ; CHECK-LABEL: @raise_load_2( ; CHECK-NOT: call -; CHECK: load i32* +; CHECK: load i32, i32* ; CHECK-NOT: call ; CHECK: } entry: @@ -60,7 +60,7 @@ unwind: ; preds = %else recurse: ; preds = %else %tmp7 = add i32 %start_arg, 1 ; <i32> [#uses=1] %tmp8 = call fastcc i32 @raise_load_2(i32* %a_arg, i32 %a_len_arg, i32 %tmp7) ; <i32> [#uses=1] - %tmp9 = load i32* @global ; <i32> [#uses=1] + %tmp9 = load i32, i32* @global ; <i32> [#uses=1] %tmp10 = add i32 %tmp9, %tmp8 ; <i32> [#uses=1] ret i32 %tmp10 } @@ -71,7 +71,7 @@ recurse: ; preds = %else define fastcc i32 @raise_load_3(i32* %a_arg, i32 %a_len_arg, i32 %start_arg) nounwind readonly { ; CHECK-LABEL: @raise_load_3( ; CHECK-NOT: call -; CHECK: load i32* +; CHECK: load i32, i32* ; CHECK-NOT: call ; CHECK: } entry: @@ -84,7 +84,7 @@ if: ; preds = %entry else: ; preds = %entry %tmp7 = add i32 %start_arg, 1 ; <i32> [#uses=1] %tmp8 = call fastcc i32 @raise_load_3(i32* %a_arg, i32 %a_len_arg, i32 %tmp7) ; <i32> [#uses=1] - %tmp9 = load i32* @extern_weak_global ; <i32> [#uses=1] + %tmp9 = load i32, i32* @extern_weak_global ; <i32> [#uses=1] %tmp10 = add i32 %tmp9, %tmp8 ; <i32> [#uses=1] ret i32 %tmp10 } @@ -96,8 +96,8 @@ else: ; preds = %entry define fastcc i32 @raise_load_4(i32* %a_arg, i32 %a_len_arg, i32 %start_arg) readonly { ; CHECK-LABEL: @raise_load_4( ; CHECK-NOT: call -; CHECK: load i32* -; CHECK-NEXT: load i32* +; CHECK: load i32, i32* +; CHECK-NEXT: load i32, i32* ; CHECK-NOT: call ; CHECK: } entry: @@ -116,9 +116,9 @@ unwind: ; preds = %else recurse: ; preds = %else %tmp7 = add i32 %start_arg, 1 ; <i32> [#uses=1] - %first = load i32* %a_arg ; <i32> [#uses=1] + %first = load i32, i32* %a_arg ; <i32> [#uses=1] %tmp8 = call fastcc i32 @raise_load_4(i32* %a_arg, i32 %first, i32 %tmp7) ; <i32> [#uses=1] - %second = load i32* %a_arg ; <i32> [#uses=1] + %second = load i32, i32* %a_arg ; <i32> [#uses=1] %tmp10 = add i32 %second, %tmp8 ; <i32> [#uses=1] ret i32 %tmp10 } |