Fix a use after free error caught by the valgrind builders.
[llvm.git] / test / Transforms / LCSSA / 2006-10-31-UnreachableBlock.ll
blobecb1be5c674ed1550d067289260bff94ef8d7eb8
1 ; RUN: opt < %s -lcssa -disable-output
2 ; PR977
3 ; END.
5 define void @process_backlog() {
6 entry:
7         br label %loopentry.preheader
8 loopentry.preheader:            ; preds = %dead_block_after_break, %entry
9         %work.0.ph = phi i32 [ %inc, %dead_block_after_break ], [ 0, %entry ]           ; <i32> [#uses=0]
10         br label %loopentry
11 loopentry:              ; preds = %endif.1, %loopentry.preheader
12         br i1 false, label %then.i, label %loopentry.__skb_dequeue67.exit_crit_edge
13 loopentry.__skb_dequeue67.exit_crit_edge:               ; preds = %loopentry
14         br label %__skb_dequeue67.exit
15 then.i:         ; preds = %loopentry
16         br label %__skb_dequeue67.exit
17 __skb_dequeue67.exit:           ; preds = %then.i, %loopentry.__skb_dequeue67.exit_crit_edge
18         br i1 false, label %then.0, label %__skb_dequeue67.exit.endif.0_crit_edge
19 __skb_dequeue67.exit.endif.0_crit_edge:         ; preds = %__skb_dequeue67.exit
20         br label %endif.0
21 then.0:         ; preds = %__skb_dequeue67.exit
22         br label %job_done
23 dead_block_after_goto:          ; No predecessors!
24         unreachable
25 endif.0:                ; preds = %__skb_dequeue67.exit.endif.0_crit_edge
26         br i1 false, label %then.0.i, label %endif.0.endif.0.i_crit_edge
27 endif.0.endif.0.i_crit_edge:            ; preds = %endif.0
28         br label %endif.0.i
29 then.0.i:               ; preds = %endif.0
30         br label %endif.0.i
31 endif.0.i:              ; preds = %then.0.i, %endif.0.endif.0.i_crit_edge
32         br i1 false, label %then.i.i, label %endif.0.i.skb_bond.exit.i_crit_edge
33 endif.0.i.skb_bond.exit.i_crit_edge:            ; preds = %endif.0.i
34         br label %skb_bond.exit.i
35 then.i.i:               ; preds = %endif.0.i
36         br label %skb_bond.exit.i
37 skb_bond.exit.i:                ; preds = %then.i.i, %endif.0.i.skb_bond.exit.i_crit_edge
38         br label %loopentry.0.i
39 loopentry.0.i:          ; preds = %loopentry.0.i.backedge, %skb_bond.exit.i
40         br i1 false, label %loopentry.0.i.no_exit.0.i_crit_edge, label %loopentry.0.i.loopexit.0.i_crit_edge
41 loopentry.0.i.loopexit.0.i_crit_edge:           ; preds = %loopentry.0.i
42         br label %loopexit.0.i
43 loopentry.0.i.no_exit.0.i_crit_edge:            ; preds = %loopentry.0.i
44         br label %no_exit.0.i
45 no_exit.0.i:            ; preds = %then.3.i.no_exit.0.i_crit_edge, %loopentry.0.i.no_exit.0.i_crit_edge
46         br i1 false, label %no_exit.0.i.shortcirc_done.0.i_crit_edge, label %shortcirc_next.0.i
47 no_exit.0.i.shortcirc_done.0.i_crit_edge:               ; preds = %no_exit.0.i
48         br label %shortcirc_done.0.i
49 shortcirc_next.0.i:             ; preds = %no_exit.0.i
50         br label %shortcirc_done.0.i
51 shortcirc_done.0.i:             ; preds = %shortcirc_next.0.i, %no_exit.0.i.shortcirc_done.0.i_crit_edge
52         br i1 false, label %then.1.i, label %endif.1.i
53 then.1.i:               ; preds = %shortcirc_done.0.i
54         br i1 false, label %then.2.i, label %then.1.i.endif.2.i_crit_edge
55 then.1.i.endif.2.i_crit_edge:           ; preds = %then.1.i
56         br label %endif.2.i
57 then.2.i:               ; preds = %then.1.i
58         br i1 false, label %then.3.i, label %else.0.i
59 then.3.i:               ; preds = %then.2.i
60         br i1 false, label %then.3.i.no_exit.0.i_crit_edge, label %then.3.i.loopexit.0.i_crit_edge
61 then.3.i.loopexit.0.i_crit_edge:                ; preds = %then.3.i
62         br label %loopexit.0.i
63 then.3.i.no_exit.0.i_crit_edge:         ; preds = %then.3.i
64         br label %no_exit.0.i
65 else.0.i:               ; preds = %then.2.i
66         br label %endif.2.i
67 endif.3.i:              ; No predecessors!
68         unreachable
69 endif.2.i:              ; preds = %else.0.i, %then.1.i.endif.2.i_crit_edge
70         br label %loopentry.0.i.backedge
71 endif.1.i:              ; preds = %shortcirc_done.0.i
72         br label %loopentry.0.i.backedge
73 loopentry.0.i.backedge:         ; preds = %endif.1.i, %endif.2.i
74         br label %loopentry.0.i
75 loopexit.0.i:           ; preds = %then.3.i.loopexit.0.i_crit_edge, %loopentry.0.i.loopexit.0.i_crit_edge
76         br label %loopentry.1.i
77 loopentry.1.i:          ; preds = %loopentry.1.i.backedge, %loopexit.0.i
78         br i1 false, label %loopentry.1.i.no_exit.1.i_crit_edge, label %loopentry.1.i.loopexit.1.i_crit_edge
79 loopentry.1.i.loopexit.1.i_crit_edge:           ; preds = %loopentry.1.i
80         br label %loopexit.1.i
81 loopentry.1.i.no_exit.1.i_crit_edge:            ; preds = %loopentry.1.i
82         br label %no_exit.1.i
83 no_exit.1.i:            ; preds = %then.6.i.no_exit.1.i_crit_edge, %loopentry.1.i.no_exit.1.i_crit_edge
84         br i1 false, label %shortcirc_next.1.i, label %no_exit.1.i.shortcirc_done.1.i_crit_edge
85 no_exit.1.i.shortcirc_done.1.i_crit_edge:               ; preds = %no_exit.1.i
86         br label %shortcirc_done.1.i
87 shortcirc_next.1.i:             ; preds = %no_exit.1.i
88         br i1 false, label %shortcirc_next.1.i.shortcirc_done.2.i_crit_edge, label %shortcirc_next.2.i
89 shortcirc_next.1.i.shortcirc_done.2.i_crit_edge:                ; preds = %shortcirc_next.1.i
90         br label %shortcirc_done.2.i
91 shortcirc_next.2.i:             ; preds = %shortcirc_next.1.i
92         br label %shortcirc_done.2.i
93 shortcirc_done.2.i:             ; preds = %shortcirc_next.2.i, %shortcirc_next.1.i.shortcirc_done.2.i_crit_edge
94         br label %shortcirc_done.1.i
95 shortcirc_done.1.i:             ; preds = %shortcirc_done.2.i, %no_exit.1.i.shortcirc_done.1.i_crit_edge
96         br i1 false, label %then.4.i, label %endif.4.i
97 then.4.i:               ; preds = %shortcirc_done.1.i
98         br i1 false, label %then.5.i, label %then.4.i.endif.5.i_crit_edge
99 then.4.i.endif.5.i_crit_edge:           ; preds = %then.4.i
100         br label %endif.5.i
101 then.5.i:               ; preds = %then.4.i
102         br i1 false, label %then.6.i, label %else.1.i
103 then.6.i:               ; preds = %then.5.i
104         br i1 false, label %then.6.i.no_exit.1.i_crit_edge, label %then.6.i.loopexit.1.i_crit_edge
105 then.6.i.loopexit.1.i_crit_edge:                ; preds = %then.6.i
106         br label %loopexit.1.i
107 then.6.i.no_exit.1.i_crit_edge:         ; preds = %then.6.i
108         br label %no_exit.1.i
109 else.1.i:               ; preds = %then.5.i
110         br label %endif.5.i
111 endif.6.i:              ; No predecessors!
112         unreachable
113 endif.5.i:              ; preds = %else.1.i, %then.4.i.endif.5.i_crit_edge
114         br label %loopentry.1.i.backedge
115 endif.4.i:              ; preds = %shortcirc_done.1.i
116         br label %loopentry.1.i.backedge
117 loopentry.1.i.backedge:         ; preds = %endif.4.i, %endif.5.i
118         br label %loopentry.1.i
119 loopexit.1.i:           ; preds = %then.6.i.loopexit.1.i_crit_edge, %loopentry.1.i.loopexit.1.i_crit_edge
120         br i1 false, label %then.7.i, label %else.2.i
121 then.7.i:               ; preds = %loopexit.1.i
122         br i1 false, label %then.8.i, label %else.3.i
123 then.8.i:               ; preds = %then.7.i
124         br label %netif_receive_skb.exit
125 else.3.i:               ; preds = %then.7.i
126         br label %netif_receive_skb.exit
127 endif.8.i:              ; No predecessors!
128         unreachable
129 else.2.i:               ; preds = %loopexit.1.i
130         br i1 false, label %else.2.i.shortcirc_done.i.i_crit_edge, label %shortcirc_next.i.i
131 else.2.i.shortcirc_done.i.i_crit_edge:          ; preds = %else.2.i
132         br label %shortcirc_done.i.i
133 shortcirc_next.i.i:             ; preds = %else.2.i
134         br label %shortcirc_done.i.i
135 shortcirc_done.i.i:             ; preds = %shortcirc_next.i.i, %else.2.i.shortcirc_done.i.i_crit_edge
136         br i1 false, label %then.i1.i, label %shortcirc_done.i.i.kfree_skb65.exit.i_crit_edge
137 shortcirc_done.i.i.kfree_skb65.exit.i_crit_edge:                ; preds = %shortcirc_done.i.i
138         br label %kfree_skb65.exit.i
139 then.i1.i:              ; preds = %shortcirc_done.i.i
140         br label %kfree_skb65.exit.i
141 kfree_skb65.exit.i:             ; preds = %then.i1.i, %shortcirc_done.i.i.kfree_skb65.exit.i_crit_edge
142         br label %netif_receive_skb.exit
143 netif_receive_skb.exit:         ; preds = %kfree_skb65.exit.i, %else.3.i, %then.8.i
144         br i1 false, label %then.i1, label %netif_receive_skb.exit.dev_put69.exit_crit_edge
145 netif_receive_skb.exit.dev_put69.exit_crit_edge:                ; preds = %netif_receive_skb.exit
146         br label %dev_put69.exit
147 then.i1:                ; preds = %netif_receive_skb.exit
148         br label %dev_put69.exit
149 dev_put69.exit:         ; preds = %then.i1, %netif_receive_skb.exit.dev_put69.exit_crit_edge
150         %inc = add i32 0, 1             ; <i32> [#uses=1]
151         br i1 false, label %dev_put69.exit.shortcirc_done_crit_edge, label %shortcirc_next
152 dev_put69.exit.shortcirc_done_crit_edge:                ; preds = %dev_put69.exit
153         br label %shortcirc_done
154 shortcirc_next:         ; preds = %dev_put69.exit
155         br label %shortcirc_done
156 shortcirc_done:         ; preds = %shortcirc_next, %dev_put69.exit.shortcirc_done_crit_edge
157         br i1 false, label %then.1, label %endif.1
158 then.1:         ; preds = %shortcirc_done
159         ret void
160 dead_block_after_break:         ; No predecessors!
161         br label %loopentry.preheader
162 endif.1:                ; preds = %shortcirc_done
163         br label %loopentry
164 loopexit:               ; No predecessors!
165         unreachable
166 after_ret.0:            ; No predecessors!
167         br label %job_done
168 job_done:               ; preds = %after_ret.0, %then.0
169         br label %loopentry.i
170 loopentry.i:            ; preds = %no_exit.i, %job_done
171         br i1 false, label %no_exit.i, label %clear_bit62.exit
172 no_exit.i:              ; preds = %loopentry.i
173         br label %loopentry.i
174 clear_bit62.exit:               ; preds = %loopentry.i
175         br i1 false, label %then.2, label %endif.2
176 then.2:         ; preds = %clear_bit62.exit
177         ret void
178 endif.2:                ; preds = %clear_bit62.exit
179         ret void
180 after_ret.1:            ; No predecessors!
181         ret void
182 return:         ; No predecessors!
183         unreachable