[mlir][int-range] Limit xor int range inference to i1 (#116968)
[llvm-project.git] / llvm / test / Analysis / ScalarEvolution / pointer-sign-bits.ll
blob02fc2196fb6f900a87679c7b457b481adb59cdd4
1 ; RUN: opt < %s -passes='print<scalar-evolution>'
3 target 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"
4   %JavaObject = type { ptr, ptr }
6 define void @JnJVM_antlr_CSharpCodeGenerator_genBitSet__Lantlr_collections_impl_BitSet_2I(ptr, ptr, i32, i1 %arg) {
7 start:
8   br i1 %arg, label %"stack overflow", label %"no stack overflow"
10 "GOTO or IF*2":         ; preds = %"true verifyAndComputePtr89", %verifyNullCont84
11   unreachable
13 "GOTO or IF*5":         ; preds = %"true verifyAndComputePtr127", %"GOTO or IF*6"
14   unreachable
16 "GOTO or IF*6":         ; preds = %"true verifyAndComputePtr131.GOTO or IF*6_crit_edge", %"true verifyAndComputePtr89"
17   %indvar = phi i32 [ %indvar.next, %"true verifyAndComputePtr131.GOTO or IF*6_crit_edge" ], [ 0, %"true verifyAndComputePtr89" ]               ; <i32> [#uses=2]
18   %.0.in = add i32 %indvar, 0           ; <i32> [#uses=1]
19   %.0 = add i32 %.0.in, 1               ; <i32> [#uses=1]
20   %3 = icmp slt i32 %.0, %4             ; <i1> [#uses=1]
21   br i1 %3, label %verifyNullCont126, label %"GOTO or IF*5"
23 end:            ; preds = %"no exception block35"
24   ret void
26 "stack overflow":               ; preds = %start
27   ret void
29 "no stack overflow":            ; preds = %start
30   br i1 %arg, label %verifyNullCont, label %"no stack overflow.end_crit_edge"
32 "no stack overflow.end_crit_edge":              ; preds = %"no stack overflow"
33   ret void
35 verifyNullCont:         ; preds = %"no stack overflow"
36   br i1 %arg, label %verifyNullCont9, label %verifyNullCont.end_crit_edge
38 verifyNullCont.end_crit_edge:           ; preds = %verifyNullCont
39   ret void
41 verifyNullCont9:                ; preds = %verifyNullCont
42   br i1 %arg, label %verifyNullCont12, label %verifyNullCont9.end_crit_edge
44 verifyNullCont9.end_crit_edge:          ; preds = %verifyNullCont9
45   ret void
47 verifyNullCont12:               ; preds = %verifyNullCont9
48   br i1 %arg, label %"no exception block13", label %verifyNullCont12.end_crit_edge
50 verifyNullCont12.end_crit_edge:         ; preds = %verifyNullCont12
51   ret void
53 "no exception block13":         ; preds = %verifyNullCont12
54   br i1 %arg, label %verifyNullExit14, label %verifyNullCont15
56 verifyNullExit14:               ; preds = %"no exception block13"
57   ret void
59 verifyNullCont15:               ; preds = %"no exception block13"
60   br i1 %arg, label %"no exception block16", label %verifyNullCont15.end_crit_edge
62 verifyNullCont15.end_crit_edge:         ; preds = %verifyNullCont15
63   ret void
65 "no exception block16":         ; preds = %verifyNullCont15
66   br i1 %arg, label %verifyNullExit17, label %verifyNullCont18
68 verifyNullExit17:               ; preds = %"no exception block16"
69   ret void
71 verifyNullCont18:               ; preds = %"no exception block16"
72   br i1 %arg, label %"no exception block19", label %verifyNullCont18.end_crit_edge
74 verifyNullCont18.end_crit_edge:         ; preds = %verifyNullCont18
75   ret void
77 "no exception block19":         ; preds = %verifyNullCont18
78   br i1 %arg, label %verifyNullExit20, label %verifyNullCont21
80 verifyNullExit20:               ; preds = %"no exception block19"
81   ret void
83 verifyNullCont21:               ; preds = %"no exception block19"
84   br i1 %arg, label %verifyNullCont24, label %verifyNullCont21.end_crit_edge
86 verifyNullCont21.end_crit_edge:         ; preds = %verifyNullCont21
87   ret void
89 verifyNullCont24:               ; preds = %verifyNullCont21
90   br i1 %arg, label %verifyNullCont27, label %verifyNullCont24.end_crit_edge
92 verifyNullCont24.end_crit_edge:         ; preds = %verifyNullCont24
93   ret void
95 verifyNullCont27:               ; preds = %verifyNullCont24
96   br i1 %arg, label %verifyNullCont32, label %verifyNullCont27.end_crit_edge
98 verifyNullCont27.end_crit_edge:         ; preds = %verifyNullCont27
99   ret void
101 verifyNullCont32:               ; preds = %verifyNullCont27
102   br i1 %arg, label %verifyNullExit33, label %verifyNullCont34
104 verifyNullExit33:               ; preds = %verifyNullCont32
105   ret void
107 verifyNullCont34:               ; preds = %verifyNullCont32
108   br i1 %arg, label %"no exception block35", label %verifyNullCont34.end_crit_edge
110 verifyNullCont34.end_crit_edge:         ; preds = %verifyNullCont34
111   ret void
113 "no exception block35":         ; preds = %verifyNullCont34
114   br i1 %arg, label %end, label %verifyNullCont60
116 verifyNullCont60:               ; preds = %"no exception block35"
117   br i1 %arg, label %verifyNullCont63, label %verifyNullCont60.end_crit_edge
119 verifyNullCont60.end_crit_edge:         ; preds = %verifyNullCont60
120   ret void
122 verifyNullCont63:               ; preds = %verifyNullCont60
123   br i1 %arg, label %"no exception block64", label %verifyNullCont63.end_crit_edge
125 verifyNullCont63.end_crit_edge:         ; preds = %verifyNullCont63
126   ret void
128 "no exception block64":         ; preds = %verifyNullCont63
129   br i1 %arg, label %verifyNullExit65, label %verifyNullCont66
131 verifyNullExit65:               ; preds = %"no exception block64"
132   ret void
134 verifyNullCont66:               ; preds = %"no exception block64"
135   br i1 %arg, label %"no exception block67", label %verifyNullCont66.end_crit_edge
137 verifyNullCont66.end_crit_edge:         ; preds = %verifyNullCont66
138   ret void
140 "no exception block67":         ; preds = %verifyNullCont66
141   br i1 %arg, label %verifyNullExit68, label %verifyNullCont69
143 verifyNullExit68:               ; preds = %"no exception block67"
144   ret void
146 verifyNullCont69:               ; preds = %"no exception block67"
147   br i1 %arg, label %"no exception block70", label %verifyNullCont69.end_crit_edge
149 verifyNullCont69.end_crit_edge:         ; preds = %verifyNullCont69
150   ret void
152 "no exception block70":         ; preds = %verifyNullCont69
153   br i1 %arg, label %verifyNullExit71, label %verifyNullCont72
155 verifyNullExit71:               ; preds = %"no exception block70"
156   ret void
158 verifyNullCont72:               ; preds = %"no exception block70"
159   br i1 %arg, label %verifyNullCont75, label %verifyNullCont72.end_crit_edge
161 verifyNullCont72.end_crit_edge:         ; preds = %verifyNullCont72
162   ret void
164 verifyNullCont75:               ; preds = %verifyNullCont72
165   br i1 %arg, label %verifyNullCont78, label %verifyNullCont75.end_crit_edge
167 verifyNullCont75.end_crit_edge:         ; preds = %verifyNullCont75
168   ret void
170 verifyNullCont78:               ; preds = %verifyNullCont75
171   br i1 %arg, label %"verifyNullCont78.GOTO or IF*4_crit_edge", label %verifyNullCont78.end_crit_edge
173 "verifyNullCont78.GOTO or IF*4_crit_edge":              ; preds = %verifyNullCont78
174   br i1 %arg, label %verifyNullExit80, label %verifyNullCont81
176 verifyNullCont78.end_crit_edge:         ; preds = %verifyNullCont78
177   ret void
179 verifyNullExit80:               ; preds = %"verifyNullCont78.GOTO or IF*4_crit_edge"
180   ret void
182 verifyNullCont81:               ; preds = %"verifyNullCont78.GOTO or IF*4_crit_edge"
183   %4 = ptrtoint ptr undef to i32                ; <i32> [#uses=2]
184   %5 = icmp slt i32 0, %4               ; <i1> [#uses=1]
185   br i1 %5, label %verifyNullCont84, label %verifyNullCont172
187 verifyNullCont84:               ; preds = %verifyNullCont81
188   br i1 %arg, label %"GOTO or IF*2", label %verifyNullCont86
190 verifyNullCont86:               ; preds = %verifyNullCont84
191   br i1 %arg, label %"true verifyAndComputePtr", label %"false verifyAndComputePtr"
193 "true verifyAndComputePtr":             ; preds = %verifyNullCont86
194   br i1 %arg, label %"true verifyAndComputePtr89", label %"false verifyAndComputePtr90"
196 "false verifyAndComputePtr":            ; preds = %verifyNullCont86
197   ret void
199 "true verifyAndComputePtr89":           ; preds = %"true verifyAndComputePtr"
200   br i1 %arg, label %"GOTO or IF*6", label %"GOTO or IF*2"
202 "false verifyAndComputePtr90":          ; preds = %"true verifyAndComputePtr"
203   ret void
205 verifyNullCont126:              ; preds = %"GOTO or IF*6"
206   br i1 %arg, label %"true verifyAndComputePtr127", label %"false verifyAndComputePtr128"
208 "true verifyAndComputePtr127":          ; preds = %verifyNullCont126
209   br i1 %arg, label %"true verifyAndComputePtr131.GOTO or IF*6_crit_edge", label %"GOTO or IF*5"
211 "false verifyAndComputePtr128":         ; preds = %verifyNullCont126
212   ret void
214 "true verifyAndComputePtr131.GOTO or IF*6_crit_edge":           ; preds = %"true verifyAndComputePtr127"
215   %indvar.next = add i32 %indvar, 1             ; <i32> [#uses=1]
216   br label %"GOTO or IF*6"
218 verifyNullCont172:              ; preds = %verifyNullCont81
219   unreachable