1; RUN: opt < %s -analyze -enable-new-pm=0 -scalar-evolution
2; RUN: opt < %s -disable-output -scalar-evolution
3
4target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
5  %JavaObject = type { [0 x i32 (...)*]*, i8* }
6
7define void @JnJVM_antlr_CSharpCodeGenerator_genBitSet__Lantlr_collections_impl_BitSet_2I(%JavaObject*, %JavaObject*, i32) {
8start:
9  br i1 undef, label %"stack overflow", label %"no stack overflow"
10
11"GOTO or IF*2":         ; preds = %"true verifyAndComputePtr89", %verifyNullCont84
12  unreachable
13
14"GOTO or IF*5":         ; preds = %"true verifyAndComputePtr127", %"GOTO or IF*6"
15  unreachable
16
17"GOTO or IF*6":         ; preds = %"true verifyAndComputePtr131.GOTO or IF*6_crit_edge", %"true verifyAndComputePtr89"
18  %indvar = phi i32 [ %indvar.next, %"true verifyAndComputePtr131.GOTO or IF*6_crit_edge" ], [ 0, %"true verifyAndComputePtr89" ]               ; <i32> [#uses=2]
19  %.0.in = add i32 %indvar, 0           ; <i32> [#uses=1]
20  %.0 = add i32 %.0.in, 1               ; <i32> [#uses=1]
21  %3 = icmp slt i32 %.0, %4             ; <i1> [#uses=1]
22  br i1 %3, label %verifyNullCont126, label %"GOTO or IF*5"
23
24end:            ; preds = %"no exception block35"
25  ret void
26
27"stack overflow":               ; preds = %start
28  ret void
29
30"no stack overflow":            ; preds = %start
31  br i1 undef, label %verifyNullCont, label %"no stack overflow.end_crit_edge"
32
33"no stack overflow.end_crit_edge":              ; preds = %"no stack overflow"
34  ret void
35
36verifyNullCont:         ; preds = %"no stack overflow"
37  br i1 undef, label %verifyNullCont9, label %verifyNullCont.end_crit_edge
38
39verifyNullCont.end_crit_edge:           ; preds = %verifyNullCont
40  ret void
41
42verifyNullCont9:                ; preds = %verifyNullCont
43  br i1 undef, label %verifyNullCont12, label %verifyNullCont9.end_crit_edge
44
45verifyNullCont9.end_crit_edge:          ; preds = %verifyNullCont9
46  ret void
47
48verifyNullCont12:               ; preds = %verifyNullCont9
49  br i1 undef, label %"no exception block13", label %verifyNullCont12.end_crit_edge
50
51verifyNullCont12.end_crit_edge:         ; preds = %verifyNullCont12
52  ret void
53
54"no exception block13":         ; preds = %verifyNullCont12
55  br i1 undef, label %verifyNullExit14, label %verifyNullCont15
56
57verifyNullExit14:               ; preds = %"no exception block13"
58  ret void
59
60verifyNullCont15:               ; preds = %"no exception block13"
61  br i1 undef, label %"no exception block16", label %verifyNullCont15.end_crit_edge
62
63verifyNullCont15.end_crit_edge:         ; preds = %verifyNullCont15
64  ret void
65
66"no exception block16":         ; preds = %verifyNullCont15
67  br i1 undef, label %verifyNullExit17, label %verifyNullCont18
68
69verifyNullExit17:               ; preds = %"no exception block16"
70  ret void
71
72verifyNullCont18:               ; preds = %"no exception block16"
73  br i1 undef, label %"no exception block19", label %verifyNullCont18.end_crit_edge
74
75verifyNullCont18.end_crit_edge:         ; preds = %verifyNullCont18
76  ret void
77
78"no exception block19":         ; preds = %verifyNullCont18
79  br i1 undef, label %verifyNullExit20, label %verifyNullCont21
80
81verifyNullExit20:               ; preds = %"no exception block19"
82  ret void
83
84verifyNullCont21:               ; preds = %"no exception block19"
85  br i1 undef, label %verifyNullCont24, label %verifyNullCont21.end_crit_edge
86
87verifyNullCont21.end_crit_edge:         ; preds = %verifyNullCont21
88  ret void
89
90verifyNullCont24:               ; preds = %verifyNullCont21
91  br i1 undef, label %verifyNullCont27, label %verifyNullCont24.end_crit_edge
92
93verifyNullCont24.end_crit_edge:         ; preds = %verifyNullCont24
94  ret void
95
96verifyNullCont27:               ; preds = %verifyNullCont24
97  br i1 undef, label %verifyNullCont32, label %verifyNullCont27.end_crit_edge
98
99verifyNullCont27.end_crit_edge:         ; preds = %verifyNullCont27
100  ret void
101
102verifyNullCont32:               ; preds = %verifyNullCont27
103  br i1 undef, label %verifyNullExit33, label %verifyNullCont34
104
105verifyNullExit33:               ; preds = %verifyNullCont32
106  ret void
107
108verifyNullCont34:               ; preds = %verifyNullCont32
109  br i1 undef, label %"no exception block35", label %verifyNullCont34.end_crit_edge
110
111verifyNullCont34.end_crit_edge:         ; preds = %verifyNullCont34
112  ret void
113
114"no exception block35":         ; preds = %verifyNullCont34
115  br i1 undef, label %end, label %verifyNullCont60
116
117verifyNullCont60:               ; preds = %"no exception block35"
118  br i1 undef, label %verifyNullCont63, label %verifyNullCont60.end_crit_edge
119
120verifyNullCont60.end_crit_edge:         ; preds = %verifyNullCont60
121  ret void
122
123verifyNullCont63:               ; preds = %verifyNullCont60
124  br i1 undef, label %"no exception block64", label %verifyNullCont63.end_crit_edge
125
126verifyNullCont63.end_crit_edge:         ; preds = %verifyNullCont63
127  ret void
128
129"no exception block64":         ; preds = %verifyNullCont63
130  br i1 undef, label %verifyNullExit65, label %verifyNullCont66
131
132verifyNullExit65:               ; preds = %"no exception block64"
133  ret void
134
135verifyNullCont66:               ; preds = %"no exception block64"
136  br i1 undef, label %"no exception block67", label %verifyNullCont66.end_crit_edge
137
138verifyNullCont66.end_crit_edge:         ; preds = %verifyNullCont66
139  ret void
140
141"no exception block67":         ; preds = %verifyNullCont66
142  br i1 undef, label %verifyNullExit68, label %verifyNullCont69
143
144verifyNullExit68:               ; preds = %"no exception block67"
145  ret void
146
147verifyNullCont69:               ; preds = %"no exception block67"
148  br i1 undef, label %"no exception block70", label %verifyNullCont69.end_crit_edge
149
150verifyNullCont69.end_crit_edge:         ; preds = %verifyNullCont69
151  ret void
152
153"no exception block70":         ; preds = %verifyNullCont69
154  br i1 undef, label %verifyNullExit71, label %verifyNullCont72
155
156verifyNullExit71:               ; preds = %"no exception block70"
157  ret void
158
159verifyNullCont72:               ; preds = %"no exception block70"
160  br i1 undef, label %verifyNullCont75, label %verifyNullCont72.end_crit_edge
161
162verifyNullCont72.end_crit_edge:         ; preds = %verifyNullCont72
163  ret void
164
165verifyNullCont75:               ; preds = %verifyNullCont72
166  br i1 undef, label %verifyNullCont78, label %verifyNullCont75.end_crit_edge
167
168verifyNullCont75.end_crit_edge:         ; preds = %verifyNullCont75
169  ret void
170
171verifyNullCont78:               ; preds = %verifyNullCont75
172  br i1 undef, label %"verifyNullCont78.GOTO or IF*4_crit_edge", label %verifyNullCont78.end_crit_edge
173
174"verifyNullCont78.GOTO or IF*4_crit_edge":              ; preds = %verifyNullCont78
175  br i1 undef, label %verifyNullExit80, label %verifyNullCont81
176
177verifyNullCont78.end_crit_edge:         ; preds = %verifyNullCont78
178  ret void
179
180verifyNullExit80:               ; preds = %"verifyNullCont78.GOTO or IF*4_crit_edge"
181  ret void
182
183verifyNullCont81:               ; preds = %"verifyNullCont78.GOTO or IF*4_crit_edge"
184  %4 = ptrtoint i8* undef to i32                ; <i32> [#uses=2]
185  %5 = icmp slt i32 0, %4               ; <i1> [#uses=1]
186  br i1 %5, label %verifyNullCont84, label %verifyNullCont172
187
188verifyNullCont84:               ; preds = %verifyNullCont81
189  br i1 undef, label %"GOTO or IF*2", label %verifyNullCont86
190
191verifyNullCont86:               ; preds = %verifyNullCont84
192  br i1 undef, label %"true verifyAndComputePtr", label %"false verifyAndComputePtr"
193
194"true verifyAndComputePtr":             ; preds = %verifyNullCont86
195  br i1 undef, label %"true verifyAndComputePtr89", label %"false verifyAndComputePtr90"
196
197"false verifyAndComputePtr":            ; preds = %verifyNullCont86
198  ret void
199
200"true verifyAndComputePtr89":           ; preds = %"true verifyAndComputePtr"
201  br i1 undef, label %"GOTO or IF*6", label %"GOTO or IF*2"
202
203"false verifyAndComputePtr90":          ; preds = %"true verifyAndComputePtr"
204  ret void
205
206verifyNullCont126:              ; preds = %"GOTO or IF*6"
207  br i1 undef, label %"true verifyAndComputePtr127", label %"false verifyAndComputePtr128"
208
209"true verifyAndComputePtr127":          ; preds = %verifyNullCont126
210  br i1 undef, label %"true verifyAndComputePtr131.GOTO or IF*6_crit_edge", label %"GOTO or IF*5"
211
212"false verifyAndComputePtr128":         ; preds = %verifyNullCont126
213  ret void
214
215"true verifyAndComputePtr131.GOTO or IF*6_crit_edge":           ; preds = %"true verifyAndComputePtr127"
216  %indvar.next = add i32 %indvar, 1             ; <i32> [#uses=1]
217  br label %"GOTO or IF*6"
218
219verifyNullCont172:              ; preds = %verifyNullCont81
220  unreachable
221}
222