blob: bfdf203959bc660ec6b67f90ef55e48cbd45c8cd [file] [log] [blame]
Nick Lewycky31f5f242008-03-02 02:48:09 +00001; RUN: llvm-as < %s | llvm-dis | llvm-as -disable-output
2; PR1269
3; END
4; http://nondot.org/sabre/LLVMNotes/ExceptionHandlingChanges.txt
5
6define i1 @test1(i8 %i, i8 %j) {
7entry: unwind_to %target
8 %tmp = sub i8 %i, %j ; <i8> [#uses=1]
9 %b = icmp eq i8 %tmp, 0 ; <i1> [#uses=1]
10 ret i1 %b
11target:
12 ret i1 false
13}
14
15define i1 @test2(i8 %i, i8 %j) {
Nick Lewycky8ffd2e72008-03-02 03:34:55 +000016entry:
17 br label %0
Nick Lewycky31f5f242008-03-02 02:48:09 +000018unwind_to %1
19 %tmp = sub i8 %i, %j ; <i8> [#uses=1]
20 %b = icmp eq i8 %tmp, 0 ; <i1> [#uses=1]
21 ret i1 %b
22 ; No predecessors!
23 ret i1 false
24}
25
26define i1 @test3(i8 %i, i8 %j) {
Nick Lewycky8ffd2e72008-03-02 03:34:55 +000027entry:
28 br label %0
Nick Lewycky31f5f242008-03-02 02:48:09 +000029unwind_to %1
30 %tmp = sub i8 %i, %j ; <i8> [#uses=1]
31 %b = icmp eq i8 %tmp, 0 ; <i1> [#uses=1]
32 ret i1 %b
33unwind_to %0
34 ret i1 false
35}
36
37define i1 @test4(i8 %i, i8 %j) {
38 %tmp = sub i8 %i, %j ; <i8> [#uses=1]
39 %b = icmp eq i8 %tmp, 0 ; <i1> [#uses=1]
40 br label %1
41unwind_to %1
42 ret i1 false
43}
44
45define void @test5() {
46 unwind
47}
48
49define void @test6() {
Nick Lewycky8ffd2e72008-03-02 03:34:55 +000050entry:
51 br label %unwind
Nick Lewycky31f5f242008-03-02 02:48:09 +000052unwind: unwind_to %unwind
53 unwind
54}
Nick Lewyckyf8033362008-03-06 06:55:58 +000055
56define i8 @test7(i1 %b) {
57entry: unwind_to %cleanup
58 br i1 %b, label %cond_true, label %cond_false
59cond_true: unwind_to %cleanup
60 br label %cleanup
61cond_false: unwind_to %cleanup
62 br label %cleanup
63cleanup:
64 %x = phi i8 [0, %entry], [1, %cond_true], [1, %cond_true],
65 [2, %cond_false], [2, %cond_false]
66 ret i8 %x
67}