summaryrefslogtreecommitdiff
path: root/dx/tests/083-ssa-phi-placement/expected.txt
blob: 9a0cb0b65619cb3436fbc7a8f9c0cc19b341296f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
reading Blort.class...
method <init> ()V
first 000c
block 000a
  pred 000c
  live in:{}
  Blort.java:17@0000: move-param-object(0) v0:NffffLBlort; <- .
  Blort.java:17@0000: goto . <- .
  next 0000
  live out:{}
block 0000
  pred 000a
  live in:{}
  Blort.java:17@0000: move-object v1:NffffLBlort; <- v0:NffffLBlort;
  Blort.java:17@0001: Rop{invoke-direct . <- Ljava/lang/Object; call throws <an
  y>}(java.lang.Object.<init>:()V catch) . <- v1:NffffLBlort;
  next 0004
  live out:{}
block 0004
  pred 0000
  live in:{}
  Blort.java:17@0004: goto . <- .
  next 000b
  live out:{}
block 000b
  pred 0004
  live in:{}
  Blort.java:17@0004: return-void . <- .
  returns
  live out:{}
block 000c
  live in:{}
  @????: goto . <- .
  next 000a
  live out:{}

method phiTest ()I
first 0048
block 0046
  pred 0048
  live in:{}
  Blort.java:21@0000: move-param-object(0) v0:LBlort; <- .
  Blort.java:21@0000: goto . <- .
  next 0000
  live out:{}
block 0000
  pred 0046
  live in:{}
  Blort.java:21@0000: const-int(1) v4:I=1 <- .
  Blort.java:21@0001: move-int v1:I <- v4:I=1
  Blort.java:22@0002: const-int(1) v4:I=1 <- .
  Blort.java:22@0003: move-int v2:I <- v4:I=1
  Blort.java:23@0004: const-int(0) v4:I=0 <- .
  Blort.java:23@0005: move-int v3:I <- v4:I=0
  Blort.java:23@0005: goto . <- .
  next 0049
  live out:{}
block 0006
  pred 0049
  live in:{}
  Blort.java:25@0006: move-int v4:I <- v3:I
  Blort.java:25@0007: const-int(100) v5:I=100 <- .
  Blort.java:25@0009: if-ge-int . <- v4:I v5:I=100
  next 000c *
  next 0022
  live out:{}
block 000c
  pred 0006
  live in:{}
  Blort.java:26@000c: move-int v4:I <- v2:I
  Blort.java:26@000d: const-int(20) v5:I=20 <- .
  Blort.java:26@000f: if-ge-int . <- v4:I v5:I=20
  next 0012 *
  next 001a
  live out:{}
block 0012
  pred 000c
  live in:{}
  Blort.java:27@0012: move-int v4:I <- v1:I
  Blort.java:27@0013: move-int v2:I <- v4:I
  Blort.java:28@0014: add-const-int(1) v3:I <- v3:I
  Blort.java:28@0017: goto . <- .
  next 0049
  live out:{}
block 001a
  pred 000c
  live in:{}
  Blort.java:30@001a: move-int v4:I <- v3:I
  Blort.java:30@001b: move-int v2:I <- v4:I
  Blort.java:31@001c: add-const-int(2) v3:I <- v3:I
  Blort.java:31@001f: goto . <- .
  next 0049
  live out:{}
block 0022
  pred 0006
  live in:{}
  Blort.java:35@0022: move-int v4:I <- v2:I
  Blort.java:35@0023: move-int v0:I <- v4:I
  Blort.java:35@0023: goto . <- .
  next 0047
  live out:{}
block 0047
  pred 0022
  live in:{}
  Blort.java:35@0023: return-int . <- v0:I
  returns
  live out:{}
block 0048
  live in:{}
  @????: goto . <- .
  next 0046
  live out:{}
block 0049
  pred 0000
  pred 0012
  pred 001a
  live in:{}
  @????: phi v5:V <- .
  @????: phi v4:V <- .
  @????: phi v3:V <- .
  @????: phi v2:V <- .
  @????: goto . <- .
  next 0006
  live out:{}

method noVars ()V
first 0004
block 0002
  pred 0004
  live in:{}
  Blort.java:42@0000: goto . <- .
  next 0000
  live out:{}
block 0000
  pred 0002
  live in:{}
  Blort.java:42@0000: goto . <- .
  next 0003
  live out:{}
block 0003
  pred 0000
  live in:{}
  Blort.java:42@0000: return-void . <- .
  returns
  live out:{}
block 0004
  live in:{}
  @????: goto . <- .
  next 0002
  live out:{}

method getOption (I)Ljava/lang/Object;
first 0098
block 008c
  pred 0098
  live in:{}
  Blort.java:51@0000: move-param-object(0) v0:LBlort; <- .
  Blort.java:51@0000: move-param-int(1) v1:I <- .
  Blort.java:51@0000: goto . <- .
  next 0000
  live out:{}
block 0093
  pred 0000
  live in:{}
  Blort.java:51@0001: Rop{move-result-pseudo Ljava/lang/Object; <- . flows} v3:
  Ljava/lang/Object; <- .
  Blort.java:51@0001: goto . <- .
  next 0004
  live out:{}
block 0000
  pred 008c
  live in:{}
  Blort.java:51@0000: move-object v3:LBlort; <- v0:LBlort;
  Blort.java:51@0001: get-field-object(Blort.fd:Ljava/lang/Object; catch) . <- 
  v3:LBlort;
  next 0093
  live out:{}
block 0004
  pred 0093
  live in:{}
  Blort.java:51@0004: if-nez-object . <- v3:Ljava/lang/Object;
  next 0007 *
  next 0011
  live out:{}
block 0094
  pred 0007
  live in:{}
  Blort.java:52@0007: Rop{move-result-pseudo N0007Ljava/lang/RuntimeException; 
  <- . flows} v3:N0007Ljava/lang/RuntimeException; <- .
  Blort.java:52@0007: goto . <- .
  next 000a
  live out:{}
block 0007
  pred 0004
  live in:{}
  Blort.java:52@0007: new-instance(java.lang.RuntimeException catch) . <- .
  next 0094
  live out:{}
block 0095
  pred 000a
  live in:{}
  Blort.java:52@000b: Rop{move-result-pseudo Ljava/lang/String; <- . flows} v5:
  Ljava/lang/String;="socket not created" <- .
  Blort.java:52@000b: goto . <- .
  next 000d
  live out:{}
block 000a
  pred 0094
  live in:{}
  Blort.java:52@000a: move-object v6:N0007Ljava/lang/RuntimeException; <- v3:N0
  007Ljava/lang/RuntimeException;
  Blort.java:52@000a: move-object v3:N0007Ljava/lang/RuntimeException; <- v6:N0
  007Ljava/lang/RuntimeException;
  Blort.java:52@000a: move-object v4:N0007Ljava/lang/RuntimeException; <- v6:N0
  007Ljava/lang/RuntimeException;
  Blort.java:52@000b: const-object("socket not created" catch) . <- .
  next 0095
  live out:{}
block 000d
  pred 0095
  live in:{}
  Blort.java:52@000d: Rop{invoke-direct . <- Ljava/lang/RuntimeException; Ljava
  /lang/String; call throws <any>}(java.lang.RuntimeException.<init>:(Ljava/lan
  g/String;)V catch) . <- v4:N0007Ljava/lang/RuntimeException; v5:Ljava/lang/St
  ring;="socket not created"
  next 0010
  live out:{}
block 0010
  pred 000d
  live in:{}
  Blort.java:52@0010: throw(catch) . <- v3:Ljava/lang/RuntimeException;
  returns
  live out:{}
block 0011
  pred 0004
  live in:{}
  Blort.java:55@0011: const-int(0) v3:I=0 <- .
  Blort.java:55@0012: move-int v2:I <- v3:I=0
  Blort.java:56@0013: move-int v3:I <- v1:I
  Blort.java:56@0014: switch({1, 2}) . <- v3:I
  next 0030
  next 0030
  next 0039 *
  live out:{}
block 0096
  pred 0030
  live in:{}
  Blort.java:60@0030: Rop{move-result-pseudo N0030Ljava/lang/Integer; <- . flow
  s} v3:N0030Ljava/lang/Integer; <- .
  Blort.java:60@0030: goto . <- .
  next 0033
  live out:{}
block 0030
  pred 0011
  live in:{}
  Blort.java:60@0030: new-instance(java.lang.Integer catch) . <- .
  next 0096
  live out:{}
block 0033
  pred 0096
  live in:{}
  Blort.java:60@0033: move-object v6:N0030Ljava/lang/Integer; <- v3:N0030Ljava/
  lang/Integer;
  Blort.java:60@0033: move-object v3:N0030Ljava/lang/Integer; <- v6:N0030Ljava/
  lang/Integer;
  Blort.java:60@0033: move-object v4:N0030Ljava/lang/Integer; <- v6:N0030Ljava/
  lang/Integer;
  Blort.java:60@0034: move-int v5:I <- v2:I
  Blort.java:60@0035: Rop{invoke-direct . <- Ljava/lang/Integer; I call throws 
  <any>}(java.lang.Integer.<init>:(I)V catch) . <- v4:N0030Ljava/lang/Integer; 
  v5:I
  next 0038
  live out:{}
block 0038
  pred 0033
  live in:{}
  Blort.java:60@0038: move-object v0:Ljava/lang/Integer; <- v3:Ljava/lang/Integ
  er;
  Blort.java:60@0038: goto . <- .
  next 008d
  live out:{}
block 0039
  pred 0011
  live in:{}
  Blort.java:63@0039: move-int v3:I <- v2:I
  Blort.java:63@003a: if-eqz-int . <- v3:I
  next 003d *
  next 0041
  live out:{}
block 003d
  pred 0039
  live in:{}
  Blort.java:63@003d: const-int(1) v3:I=1 <- .
  Blort.java:63@003e: goto . <- .
  next 0042
  live out:{}
block 0041
  pred 0039
  live in:{}
  Blort.java:63@0041: const-int(0) v3:I=0 <- .
  Blort.java:63@0041: goto . <- .
  next 0042
  live out:{}
block 0097
  pred 0042
  live in:{}
  Blort.java:63@0042: Rop{move-result Ljava/lang/Boolean; <- . flows} v3:Ljava/
  lang/Boolean; <- .
  Blort.java:63@0042: goto . <- .
  next 0045
  live out:{}
block 0042
  pred 003d
  pred 0041
  live in:{}
  @????: phi v3:V <- .
  Blort.java:63@0042: Rop{invoke-static . <- I call throws <any>}(java.lang.Boo
  lean.valueOf:(Z)Ljava/lang/Boolean; catch) . <- v3:I
  next 0097
  live out:{}
block 0045
  pred 0097
  live in:{}
  Blort.java:63@0045: move-object v0:Ljava/lang/Boolean; <- v3:Ljava/lang/Boole
  an;
  Blort.java:63@0045: goto . <- .
  next 008d
  live out:{}
block 008d
  pred 0038
  pred 0045
  live in:{}
  @????: phi v6:V <- .
  @????: phi v5:V <- .
  @????: phi v4:V <- .
  @????: phi v3:V <- .
  @????: phi v0:V <- .
  Blort.java:63@0045: return-object . <- v0:Ljava/lang/Object;
  returns
  live out:{}
block 0098
  live in:{}
  @????: goto . <- .
  next 008c
  live out:{}