| ; RUN: llvm-as < %s | llvm-dis | llvm-as -disable-output |
| ; PR1269 |
| ; END |
| ; http://nondot.org/sabre/LLVMNotes/ExceptionHandlingChanges.txt |
| |
| define i1 @test1(i8 %i, i8 %j) { |
| entry: unwind_to %target |
| %tmp = sub i8 %i, %j ; <i8> [#uses=1] |
| %b = icmp eq i8 %tmp, 0 ; <i1> [#uses=1] |
| ret i1 %b |
| target: |
| ret i1 false |
| } |
| |
| define i1 @test2(i8 %i, i8 %j) { |
| entry: |
| br label %0 |
| unwind_to %1 |
| %tmp = sub i8 %i, %j ; <i8> [#uses=1] |
| %b = icmp eq i8 %tmp, 0 ; <i1> [#uses=1] |
| ret i1 %b |
| ; No predecessors! |
| ret i1 false |
| } |
| |
| define i1 @test3(i8 %i, i8 %j) { |
| entry: |
| br label %0 |
| unwind_to %1 |
| %tmp = sub i8 %i, %j ; <i8> [#uses=1] |
| %b = icmp eq i8 %tmp, 0 ; <i1> [#uses=1] |
| ret i1 %b |
| unwind_to %0 |
| ret i1 false |
| } |
| |
| define i1 @test4(i8 %i, i8 %j) { |
| %tmp = sub i8 %i, %j ; <i8> [#uses=1] |
| %b = icmp eq i8 %tmp, 0 ; <i1> [#uses=1] |
| br label %1 |
| unwind_to %1 |
| ret i1 false |
| } |
| |
| define void @test5() { |
| unwind |
| } |
| |
| define void @test6() { |
| entry: |
| br label %unwind |
| unwind: unwind_to %unwind |
| unwind |
| } |
| |
| define i8 @test7(i1 %b) { |
| entry: unwind_to %cleanup |
| br i1 %b, label %cond_true, label %cond_false |
| cond_true: unwind_to %cleanup |
| br label %cleanup |
| cond_false: unwind_to %cleanup |
| br label %cleanup |
| cleanup: |
| %x = phi i8 [0, %entry], [1, %cond_true], [1, %cond_true], |
| [2, %cond_false], [2, %cond_false] |
| ret i8 %x |
| } |