diff options
Diffstat (limited to 'test/Transforms/TailCallElim')
-rw-r--r-- | test/Transforms/TailCallElim/dont_reorder_load.ll | 2 | ||||
-rw-r--r-- | test/Transforms/TailCallElim/reorder_load.ll | 4 | ||||
-rw-r--r-- | test/Transforms/TailCallElim/setjmp.ll | 21 |
3 files changed, 20 insertions, 7 deletions
diff --git a/test/Transforms/TailCallElim/dont_reorder_load.ll b/test/Transforms/TailCallElim/dont_reorder_load.ll index cc273c3..899e115 100644 --- a/test/Transforms/TailCallElim/dont_reorder_load.ll +++ b/test/Transforms/TailCallElim/dont_reorder_load.ll @@ -16,7 +16,7 @@ entry: br i1 %tmp2, label %if, label %else if: ; preds = %entry - unwind + ret i32 37 else: ; preds = %entry %tmp7 = add i32 %start_arg, 1 ; <i32> [#uses=1] diff --git a/test/Transforms/TailCallElim/reorder_load.ll b/test/Transforms/TailCallElim/reorder_load.ll index 7f8af7e..7f5c36e 100644 --- a/test/Transforms/TailCallElim/reorder_load.ll +++ b/test/Transforms/TailCallElim/reorder_load.ll @@ -43,7 +43,7 @@ else: ; preds = %entry br i1 %nullcheck, label %unwind, label %recurse unwind: ; preds = %else - unwind + unreachable recurse: ; preds = %else %tmp7 = add i32 %start_arg, 1 ; <i32> [#uses=1] @@ -89,7 +89,7 @@ else: ; preds = %entry br i1 %nullcheck, label %unwind, label %recurse unwind: ; preds = %else - unwind + unreachable recurse: ; preds = %else %tmp7 = add i32 %start_arg, 1 ; <i32> [#uses=1] diff --git a/test/Transforms/TailCallElim/setjmp.ll b/test/Transforms/TailCallElim/setjmp.ll index 7b7fe56..4ce6ac7 100644 --- a/test/Transforms/TailCallElim/setjmp.ll +++ b/test/Transforms/TailCallElim/setjmp.ll @@ -1,16 +1,29 @@ ; RUN: opt < %s -tailcallelim -S | FileCheck %s -; Test that we don't tail call in a functions that calls setjmp. +; Test that we don't tail call in a functions that calls returns_twice +; functions. +declare void @bar() + +; CHECK: foo1 ; CHECK-NOT: tail call void @bar() -define void @foo(i32* %x) { +define void @foo1(i32* %x) { bb: %tmp75 = tail call i32 @setjmp(i32* %x) call void @bar() ret void } -declare i32 @setjmp(i32*) +declare i32 @setjmp(i32*) returns_twice -declare void @bar() +; CHECK: foo2 +; CHECK-NOT: tail call void @bar() + +define void @foo2(i32* %x) { +bb: + %tmp75 = tail call i32 @zed2(i32* %x) + call void @bar() + ret void +} +declare i32 @zed2(i32*) returns_twice |