diff options
Diffstat (limited to 'test/Transforms/LowerInvoke')
-rw-r--r-- | test/Transforms/LowerInvoke/2003-12-10-Crash.ll | 22 | ||||
-rw-r--r-- | test/Transforms/LowerInvoke/2004-02-29-PHICrash.ll | 15 | ||||
-rw-r--r-- | test/Transforms/LowerInvoke/2005-08-03-InvokeWithPHI.ll | 17 | ||||
-rw-r--r-- | test/Transforms/LowerInvoke/2005-08-03-InvokeWithPHIUse.ll | 15 | ||||
-rw-r--r-- | test/Transforms/LowerInvoke/2008-02-14-CritEdgePhiCrash.ll | 14 | ||||
-rw-r--r-- | test/Transforms/LowerInvoke/basictest.ll | 30 | ||||
-rw-r--r-- | test/Transforms/LowerInvoke/dg.exp | 3 |
7 files changed, 116 insertions, 0 deletions
diff --git a/test/Transforms/LowerInvoke/2003-12-10-Crash.ll b/test/Transforms/LowerInvoke/2003-12-10-Crash.ll new file mode 100644 index 0000000000000..1e8b880485e4e --- /dev/null +++ b/test/Transforms/LowerInvoke/2003-12-10-Crash.ll @@ -0,0 +1,22 @@ +; This testcase was reduced from Shootout-C++/reversefile.cpp by bugpoint + +; RUN: llvm-as < %s | opt -lowerinvoke -disable-output + +declare void @baz() + +declare void @bar() + +define void @foo() { +then: + invoke void @baz( ) + to label %invoke_cont.0 unwind label %try_catch +invoke_cont.0: ; preds = %then + invoke void @bar( ) + to label %try_exit unwind label %try_catch +try_catch: ; preds = %invoke_cont.0, %then + %__tmp.0 = phi i32* [ null, %invoke_cont.0 ], [ null, %then ] ; <i32*> [#uses=0] + ret void +try_exit: ; preds = %invoke_cont.0 + ret void +} + diff --git a/test/Transforms/LowerInvoke/2004-02-29-PHICrash.ll b/test/Transforms/LowerInvoke/2004-02-29-PHICrash.ll new file mode 100644 index 0000000000000..07770136964ee --- /dev/null +++ b/test/Transforms/LowerInvoke/2004-02-29-PHICrash.ll @@ -0,0 +1,15 @@ +; RUN: llvm-as < %s | opt -lowerinvoke -enable-correct-eh-support -disable-output + +define void @_ZNKSt11__use_cacheISt16__numpunct_cacheIcEEclERKSt6locale() { +entry: + br i1 false, label %then, label %UnifiedReturnBlock +then: ; preds = %entry + invoke void @_Znwj( ) + to label %UnifiedReturnBlock unwind label %UnifiedReturnBlock +UnifiedReturnBlock: ; preds = %then, %then, %entry + %UnifiedRetVal = phi i32* [ null, %entry ], [ null, %then ], [ null, %then ] ; <i32*> [#uses=0] + ret void +} + +declare void @_Znwj() + diff --git a/test/Transforms/LowerInvoke/2005-08-03-InvokeWithPHI.ll b/test/Transforms/LowerInvoke/2005-08-03-InvokeWithPHI.ll new file mode 100644 index 0000000000000..10c878537289f --- /dev/null +++ b/test/Transforms/LowerInvoke/2005-08-03-InvokeWithPHI.ll @@ -0,0 +1,17 @@ +; RUN: llvm-as < %s | opt -lowerinvoke -enable-correct-eh-support -disable-output + +declare void @ll_listnext__listiterPtr() + +define void @WorkTask.fn() { +block0: + invoke void @ll_listnext__listiterPtr( ) + to label %block9 unwind label %block8_exception_handling +block8_exception_handling: ; preds = %block0 + ret void +block9: ; preds = %block0 + %w_2690 = phi { i32, i32 }* [ null, %block0 ] ; <{ i32, i32 }*> [#uses=1] + %tmp.129 = getelementptr { i32, i32 }* %w_2690, i32 0, i32 1 ; <i32*> [#uses=1] + %v2769 = load i32* %tmp.129 ; <i32> [#uses=0] + ret void +} + diff --git a/test/Transforms/LowerInvoke/2005-08-03-InvokeWithPHIUse.ll b/test/Transforms/LowerInvoke/2005-08-03-InvokeWithPHIUse.ll new file mode 100644 index 0000000000000..0a8ccbe3e61ea --- /dev/null +++ b/test/Transforms/LowerInvoke/2005-08-03-InvokeWithPHIUse.ll @@ -0,0 +1,15 @@ +; RUN: llvm-as < %s | opt -lowerinvoke -enable-correct-eh-support -disable-output + +declare fastcc i32 @ll_listnext__listiterPtr() + +define fastcc i32 @WorkTask.fn() { +block0: + %v2679 = invoke fastcc i32 @ll_listnext__listiterPtr( ) + to label %block9 unwind label %block8_exception_handling ; <i32> [#uses=1] +block8_exception_handling: ; preds = %block0 + ret i32 0 +block9: ; preds = %block0 + %i_2689 = phi i32 [ %v2679, %block0 ] ; <i32> [#uses=1] + ret i32 %i_2689 +} + diff --git a/test/Transforms/LowerInvoke/2008-02-14-CritEdgePhiCrash.ll b/test/Transforms/LowerInvoke/2008-02-14-CritEdgePhiCrash.ll new file mode 100644 index 0000000000000..fa8253986533b --- /dev/null +++ b/test/Transforms/LowerInvoke/2008-02-14-CritEdgePhiCrash.ll @@ -0,0 +1,14 @@ +; RUN: llvm-as < %s | opt -lowerinvoke -enable-correct-eh-support -disable-output +; PR2029 +define i32 @main(i32 %argc, i8** %argv) { +bb470: + invoke i32 @main(i32 0, i8** null) to label %invcont474 unwind label +%lpad902 + +invcont474: ; preds = %bb470 + ret i32 0 + +lpad902: ; preds = %bb470 + %tmp471.lcssa = phi i8* [ null, %bb470 ] ; <i8*> + ret i32 0 +} diff --git a/test/Transforms/LowerInvoke/basictest.ll b/test/Transforms/LowerInvoke/basictest.ll new file mode 100644 index 0000000000000..a9c19f2790d50 --- /dev/null +++ b/test/Transforms/LowerInvoke/basictest.ll @@ -0,0 +1,30 @@ +; RUN: llvm-as < %s | opt -lowerinvoke -disable-output -enable-correct-eh-support + + +define i32 @foo() { + invoke i32 @foo( ) + to label %Ok unwind label %Crap ; <i32>:1 [#uses=0] +Ok: ; preds = %0 + invoke i32 @foo( ) + to label %Ok2 unwind label %Crap ; <i32>:2 [#uses=0] +Ok2: ; preds = %Ok + ret i32 2 +Crap: ; preds = %Ok, %0 + ret i32 1 +} + +define i32 @bar(i32 %blah) { + br label %doit +doit: ; preds = %0 + ;; Value live across an unwind edge. + %B2 = add i32 %blah, 1 ; <i32> [#uses=1] + invoke i32 @foo( ) + to label %Ok unwind label %Crap ; <i32>:1 [#uses=0] +Ok: ; preds = %doit + invoke i32 @foo( ) + to label %Ok2 unwind label %Crap ; <i32>:2 [#uses=0] +Ok2: ; preds = %Ok + ret i32 2 +Crap: ; preds = %Ok, %doit + ret i32 %B2 +} diff --git a/test/Transforms/LowerInvoke/dg.exp b/test/Transforms/LowerInvoke/dg.exp new file mode 100644 index 0000000000000..f2005891a59a8 --- /dev/null +++ b/test/Transforms/LowerInvoke/dg.exp @@ -0,0 +1,3 @@ +load_lib llvm.exp + +RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,c,cpp}]] |