summaryrefslogtreecommitdiff
path: root/base/BinaryTree.opt.regalloc
blob: 635f436ae115b7e651e5a60d83870bae8881d4fa (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
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
func Main
  in 0, out 0, callee-saves 0, spills 0
Live In:
  t.0: 9
Linear Range:
  t.0: 8-9
Allocation:
  t.0: t0

func BT.Start
  in 0, out 0, callee-saves 1, spills 0
Live In:
  this:
  root: 14 17-18 21-23 26-27 30-31 34-35 38-39 42-43 46-47 50-51 54-55 58-59 62-64 67-69 72-74 77-79 82-84 87-88 91-92 95
  ntb:
  t.0: 63
  t.1: 68
  t.2: 73
  t.3: 78
  t.4: 83
  t.5: 96
Linear Range:
  root: 13-95 (cross call)
  t.0: 62-63
  t.1: 67-68
  t.2: 72-73
  t.3: 77-78
  t.4: 82-83
  t.5: 95-96
Allocation:
  root: s0
  t.0: t0
  t.1: t0
  t.2: t0
  t.3: t0
  t.4: t0
  t.5: t0

func Tree.Init
  in 0, out 0, callee-saves 0, spills 0
Live In:
  this: 100-102
  v_key: 100
Linear Range:
  this: 99-102
  v_key: 99-100
Allocation:
  this: t0
  v_key: t1

func Tree.SetRight
  in 0, out 0, callee-saves 0, spills 0
Live In:
  this: 106
  rn: 106
Linear Range:
  this: 105-106
  rn: 105-106
Allocation:
  this: t0
  rn: t1

func Tree.SetLeft
  in 0, out 0, callee-saves 0, spills 0
Live In:
  this: 110
  ln: 110
Linear Range:
  this: 109-110
  ln: 109-110
Allocation:
  this: t0
  ln: t1

func Tree.GetRight
  in 0, out 0, callee-saves 0, spills 0
Live In:
  this: 114
  t.0: 115
Linear Range:
  this: 113-114
  t.0: 114-115
Allocation:
  this: t0
  t.0: t0

func Tree.GetLeft
  in 0, out 0, callee-saves 0, spills 0
Live In:
  this: 118
  t.0: 119
Linear Range:
  this: 117-118
  t.0: 118-119
Allocation:
  this: t0
  t.0: t0

func Tree.GetKey
  in 0, out 0, callee-saves 0, spills 0
Live In:
  this: 122
  t.0: 123
Linear Range:
  this: 121-122
  t.0: 122-123
Allocation:
  this: t0
  t.0: t0

func Tree.SetKey
  in 0, out 0, callee-saves 0, spills 0
Live In:
  this: 126
  v_key: 126
Linear Range:
  this: 125-126
  v_key: 125-126
Allocation:
  this: t0
  v_key: t1

func Tree.GetHas_Right
  in 0, out 0, callee-saves 0, spills 0
Live In:
  this: 130
  t.0: 131
Linear Range:
  this: 129-130
  t.0: 130-131
Allocation:
  this: t0
  t.0: t0

func Tree.GetHas_Left
  in 0, out 0, callee-saves 0, spills 0
Live In:
  this: 134
  t.0: 135
Linear Range:
  this: 133-134
  t.0: 134-135
Allocation:
  this: t0
  t.0: t0

func Tree.SetHas_Left
  in 0, out 0, callee-saves 0, spills 0
Live In:
  this: 138
  val: 138
Linear Range:
  this: 137-138
  val: 137-138
Allocation:
  this: t0
  val: t1

func Tree.SetHas_Right
  in 0, out 0, callee-saves 0, spills 0
Live In:
  this: 142
  val: 142
Linear Range:
  this: 141-142
  val: 141-142
Allocation:
  this: t0
  val: t1

func Tree.Compare
  in 0, out 0, callee-saves 0, spills 0
Live In:
  this:
  num1: 146-149 153
  num2: 146-148
  ntb: 151 156 161
  nti: 148-149 153
  t.0: 149
  t.1: 154
Linear Range:
  num1: 145-153
  num2: 145-148
  ntb: 150-161
  nti: 147-153
  t.0: 148-149
  t.1: 153-154
Allocation:
  num1: t0
  num2: t1
  ntb: t1
  nti: t2
  t.0: t1
  t.1: t2

func Tree.Insert
  in 0, out 0, callee-saves 4, spills 0
Live In:
  this: 164-165 168-169
  v_key: 164-165 168-173 176-179 182-184 187-191 194-195 198-202 205-207 210-214 217-218 221-224
  new_node: 165 168-173 176-179 182-184 187-191 194-195 198-202 205-207 210-214 217-218 221-224
  ntb:
  current_node: 170-173 176-179 182-184 187-191 194-195 198-202 205-207 210-214 217-218 221-224
  cont: 172-173 176-179 182-184 187-188 191 194-195 198-202 205-207 210-211 214 217-218 221-224
  key_aux: 177
  t.0: 178
  t.1: 183
  t.2: 206
Linear Range:
  this: 163-169 (cross call)
  v_key: 163-224 (cross call)
  new_node: 164-224 (cross call)
  current_node: 169-224 (cross call)
  cont: 170-224 (cross call)
  key_aux: 176-177
  t.0: 177-178
  t.1: 182-183
  t.2: 205-206
Allocation:
  this: s0
  v_key: s1
  new_node: s2
  current_node: s0
  cont: s3
  key_aux: t0
  t.0: t0
  t.1: t0
  t.2: t0

func Tree.Delete
  in 0, out 0, callee-saves 7, spills 0
Live In:
  this: 229-236 239-242 245-248 251-260 263-266 269-277 280-282 285-301
  v_key: 229-236 239-242 245-248 251-260 263-266 269-277 280-282 285-301
  current_node: 230-236 239-242 245-248 251-260 263-266 269-277 280-282 285-301
  parent_node: 231-236 239-242 245-246 248 251-260 263-264 266 269-277 280-282 285-301
  cont: 232-236 239-242 245-248 251-252 256-260 263-266 269-270 274 300-301
  found: 233-236 239-242 245-248 251-260 263-266 269-274 297-303
  is_root: 235-236 239-241 258-259 276 301
  key_aux: 240-241 258
  t.0: 241
  t.1: 246
  t.2: 259
  t.3: 264
  t.4: 281
  t.5: 286
  ntb:
Linear Range:
  this: 228-301 (cross call)
  v_key: 228-301 (cross call)
  current_node: 229-301 (cross call)
  parent_node: 230-301 (cross call)
  cont: 231-301 (cross call)
  found: 232-303 (cross call)
  is_root: 233-301 (cross call)
  key_aux: 239-258
  t.0: 240-241
  t.1: 245-246
  t.2: 258-259
  t.3: 263-264
  t.4: 280-281
  t.5: 285-286
Allocation:
  this: s0
  v_key: s1
  current_node: s2
  parent_node: s3
  cont: s4
  found: s5
  is_root: s6
  key_aux: t0
  t.0: t1
  t.1: t1
  t.2: t0
  t.3: t0
  t.4: t0
  t.5: t0

func Tree.Remove
  in 0, out 0, callee-saves 3, spills 0
Live In:
  this: 306 309-311 314 317-319 322 325-326 329-330 333-336 339 347 350
  p_node: 306 309-311 314 317-319 322 325-326 329-330 333-336 339-341 344 347 350-352 355
  c_node: 306 309-311 314 317-319 322 325
  t.0: 310
  ntb:
  t.1: 318
  auxkey1: 326 329-330 333-334
  t.2: 330 333
  auxkey2: 334
  t.3: 335
  t.4: 340
  t.5: 351
Linear Range:
  this: 305-350 (cross call)
  p_node: 305-355 (cross call)
  c_node: 305-325 (cross call)
  t.0: 309-310
  t.1: 317-318
  auxkey1: 325-334 (cross call)
  t.2: 329-333
  auxkey2: 333-334
  t.3: 334-335
  t.4: 339-340
  t.5: 350-351
Allocation:
  this: s0
  p_node: s1
  c_node: s2
  t.0: t0
  t.1: t0
  auxkey1: s2
  t.2: t0
  auxkey2: t0
  t.3: t0
  t.4: t0
  t.5: t0

func Tree.RemoveRight
  in 0, out 0, callee-saves 3, spills 0
Live In:
  this: 363 366-368 371 374-375 378-381 384-387 390
  p_node: 363 366-367 381 384-387 390-392 395
  c_node: 363 366-368 371 374-375 378-381 384-385
  t.0: 367
  t.1: 375 378
  t.2: 379
  ntb:
  t.3: 391
Linear Range:
  this: 361-390 (cross call)
  p_node: 361-395 (cross call)
  c_node: 361-385 (cross call)
  t.0: 366-367
  t.1: 374-378
  t.2: 378-379
  t.3: 390-391
Allocation:
  this: s0
  p_node: s1
  c_node: s2
  t.0: t0
  t.1: t0
  t.2: t0
  t.3: t0

func Tree.RemoveLeft
  in 0, out 0, callee-saves 3, spills 0
Live In:
  this: 400 403-405 408 411-412 415-418 421-424 427
  p_node: 400 403-404 418 421-424 427-429 432
  c_node: 400 403-405 408 411-412 415-418 421-422
  t.0: 404
  t.1: 412 415
  t.2: 416
  ntb:
  t.3: 428
Linear Range:
  this: 398-427 (cross call)
  p_node: 398-432 (cross call)
  c_node: 398-422 (cross call)
  t.0: 403-404
  t.1: 411-415
  t.2: 415-416
  t.3: 427-428
Allocation:
  this: s0
  p_node: s1
  c_node: s2
  t.0: t0
  t.1: t0
  t.2: t0
  t.3: t0

func Tree.Search
  in 0, out 0, callee-saves 4, spills 0
Live In:
  this: 436
  v_key: 436-441 444-447 450-452 455-464 467-469 472-483
  current_node: 437-441 444-447 450-452 455-464 467-469 472-483
  cont: 438-441 444-447 450-452 455-456 460-464 467-469 472-473 477 483
  ifound: 440-441 444-447 450-452 455-464 467-469 472-477 480-485
  key_aux: 445-446 462
  t.0: 446
  t.1: 451
  t.2: 463
  t.3: 468
Linear Range:
  this: 435-436
  v_key: 435-483 (cross call)
  current_node: 436-483 (cross call)
  cont: 437-483 (cross call)
  ifound: 438-485 (cross call)
  key_aux: 444-462
  t.0: 445-446
  t.1: 450-451
  t.2: 462-463
  t.3: 467-468
Allocation:
  this: t0
  v_key: s0
  current_node: s1
  cont: s2
  ifound: s3
  key_aux: t0
  t.0: t1
  t.1: t1
  t.2: t0
  t.3: t0

func Tree.Print
  in 0, out 0, callee-saves 0, spills 0
Live In:
  this: 488-489
  current_node: 489
  ntb:
Linear Range:
  this: 487-489
  current_node: 488-489
Allocation:
  this: t0
  current_node: t1

func Tree.RecPrint
  in 0, out 0, callee-saves 2, spills 0
Live In:
  this: 493 496-498 501-507 510-512 515-517 520-521
  node: 493 496-498 501-507 510-512 515-517 520
  t.0: 497
  t.1: 502
  ntb:
  t.2: 511
  t.3: 516
  t.4: 521
Linear Range:
  this: 492-521 (cross call)
  node: 492-520 (cross call)
  t.0: 496-497
  t.1: 501-502
  t.2: 510-511
  t.3: 515-516
  t.4: 520-521
Allocation:
  this: s0
  node: s1
  t.0: t0
  t.1: t0
  t.2: t0
  t.3: t0
  t.4: t0