[SimplifyCFG] Remove redundant catchpads
[oota-llvm.git] / test / Transforms / SimplifyCFG / switch-simplify-crash.ll
1 ; RUN: opt < %s -simplifycfg -disable-output
2
3 define void @NewExtractNames() {
4 entry:
5         br i1 false, label %endif.0, label %then.0
6 then.0:         ; preds = %entry
7         br i1 false, label %shortcirc_next.i, label %shortcirc_done.i
8 shortcirc_next.i:               ; preds = %then.0
9         br label %shortcirc_done.i
10 shortcirc_done.i:               ; preds = %shortcirc_next.i, %then.0
11         br i1 false, label %then.0.i, label %else.0.i
12 then.0.i:               ; preds = %shortcirc_done.i
13         br label %NewBase.exit
14 else.0.i:               ; preds = %shortcirc_done.i
15         br i1 false, label %endif.0.i, label %else.1.i
16 else.1.i:               ; preds = %else.0.i
17         br i1 false, label %endif.0.i, label %else.2.i
18 else.2.i:               ; preds = %else.1.i
19         br label %NewBase.exit
20 endif.0.i:              ; preds = %else.1.i, %else.0.i
21         br label %NewBase.exit
22 NewBase.exit:           ; preds = %endif.0.i, %else.2.i, %then.0.i
23         br label %endif.0
24 endif.0:                ; preds = %NewBase.exit, %entry
25         %tmp.32.mask = and i32 0, 31            ; <i32> [#uses=1]
26         switch i32 %tmp.32.mask, label %label.9 [
27                  i32 16, label %loopentry.2
28                  i32 15, label %loopentry.2
29                  i32 14, label %loopentry.2
30                  i32 13, label %loopentry.2
31                  i32 10, label %loopentry.2
32                  i32 20, label %loopentry.1
33                  i32 19, label %loopentry.1
34                  i32 2, label %loopentry.0
35                  i32 0, label %switchexit
36         ]
37 loopentry.0:            ; preds = %endif.1, %endif.0
38         br i1 false, label %no_exit.0, label %switchexit
39 no_exit.0:              ; preds = %loopentry.0
40         br i1 false, label %then.1, label %else.1
41 then.1:         ; preds = %no_exit.0
42         br label %endif.1
43 else.1:         ; preds = %no_exit.0
44         br i1 false, label %shortcirc_next.0, label %shortcirc_done.0
45 shortcirc_next.0:               ; preds = %else.1
46         br label %shortcirc_done.0
47 shortcirc_done.0:               ; preds = %shortcirc_next.0, %else.1
48         br i1 false, label %then.2, label %endif.2
49 then.2:         ; preds = %shortcirc_done.0
50         br label %endif.2
51 endif.2:                ; preds = %then.2, %shortcirc_done.0
52         br label %endif.1
53 endif.1:                ; preds = %endif.2, %then.1
54         br label %loopentry.0
55 loopentry.1:            ; preds = %endif.3, %endif.0, %endif.0
56         br i1 false, label %no_exit.1, label %switchexit
57 no_exit.1:              ; preds = %loopentry.1
58         br i1 false, label %then.3, label %else.2
59 then.3:         ; preds = %no_exit.1
60         br label %endif.3
61 else.2:         ; preds = %no_exit.1
62         br i1 false, label %shortcirc_next.1, label %shortcirc_done.1
63 shortcirc_next.1:               ; preds = %else.2
64         br label %shortcirc_done.1
65 shortcirc_done.1:               ; preds = %shortcirc_next.1, %else.2
66         br i1 false, label %then.4, label %endif.4
67 then.4:         ; preds = %shortcirc_done.1
68         br label %endif.4
69 endif.4:                ; preds = %then.4, %shortcirc_done.1
70         br label %endif.3
71 endif.3:                ; preds = %endif.4, %then.3
72         br label %loopentry.1
73 loopentry.2:            ; preds = %endif.5, %endif.0, %endif.0, %endif.0, %endif.0, %endif.0
74         %i.3 = phi i32 [ 0, %endif.5 ], [ 0, %endif.0 ], [ 0, %endif.0 ], [ 0, %endif.0 ], [ 0, %endif.0 ], [ 0, %endif.0 ]             ; <i32> [#uses=1]
75         %tmp.158 = icmp slt i32 %i.3, 0         ; <i1> [#uses=1]
76         br i1 %tmp.158, label %no_exit.2, label %switchexit
77 no_exit.2:              ; preds = %loopentry.2
78         br i1 false, label %shortcirc_next.2, label %shortcirc_done.2
79 shortcirc_next.2:               ; preds = %no_exit.2
80         br label %shortcirc_done.2
81 shortcirc_done.2:               ; preds = %shortcirc_next.2, %no_exit.2
82         br i1 false, label %then.5, label %endif.5
83 then.5:         ; preds = %shortcirc_done.2
84         br label %endif.5
85 endif.5:                ; preds = %then.5, %shortcirc_done.2
86         br label %loopentry.2
87 label.9:                ; preds = %endif.0
88         br i1 false, label %then.6, label %endif.6
89 then.6:         ; preds = %label.9
90         br label %endif.6
91 endif.6:                ; preds = %then.6, %label.9
92         store i32 0, i32* null
93         br label %switchexit
94 switchexit:             ; preds = %endif.6, %loopentry.2, %loopentry.1, %loopentry.0, %endif.0
95         br i1 false, label %endif.7, label %then.7
96 then.7:         ; preds = %switchexit
97         br i1 false, label %shortcirc_next.3, label %shortcirc_done.3
98 shortcirc_next.3:               ; preds = %then.7
99         br label %shortcirc_done.3
100 shortcirc_done.3:               ; preds = %shortcirc_next.3, %then.7
101         br i1 false, label %then.8, label %endif.8
102 then.8:         ; preds = %shortcirc_done.3
103         br label %endif.8
104 endif.8:                ; preds = %then.8, %shortcirc_done.3
105         br label %endif.7
106 endif.7:                ; preds = %endif.8, %switchexit
107         ret void
108 }