@@ -67,10 +67,10 @@ let cfg = CFG(BasicBlock[
67
67
make_bb ([2 , 3 ] , [5 ] ),
68
68
make_bb ([2 , 4 ] , [] ),
69
69
], Int[])
70
- dfs = Compiler. DFS (cfg)
70
+ dfs = Compiler. DFS (cfg. blocks )
71
71
@test dfs. from_pre[dfs. to_parent_pre[dfs. to_pre[5 ]]] == 4
72
- let correct_idoms = Compiler. naive_idoms (cfg)
73
- @test Compiler. construct_domtree (cfg). idoms_bb == correct_idoms
72
+ let correct_idoms = Compiler. naive_idoms (cfg. blocks )
73
+ @test Compiler. construct_domtree (cfg. blocks ). idoms_bb == correct_idoms
74
74
# For completeness, reverse the order of pred/succ in the CFG and verify
75
75
# the answer doesn't change (it does change the which node is chosen
76
76
# as the semi-dominator, since it changes the DFS numbering).
@@ -81,7 +81,7 @@ let cfg = CFG(BasicBlock[
81
81
c && (blocks[4 ] = make_bb (reverse (blocks[4 ]. preds), blocks[4 ]. succs))
82
82
d && (blocks[5 ] = make_bb (reverse (blocks[5 ]. preds), blocks[5 ]. succs))
83
83
cfg′ = CFG (blocks, cfg. index)
84
- @test Compiler. construct_domtree (cfg′). idoms_bb == correct_idoms
84
+ @test Compiler. construct_domtree (cfg′. blocks ). idoms_bb == correct_idoms
85
85
end
86
86
end
87
87
end
@@ -265,53 +265,53 @@ let cfg = CFG(BasicBlock[
265
265
make_bb ([2 , 6 ], []),
266
266
make_bb ([4 ], [5 , 3 ]),
267
267
], Int[])
268
- domtree = Compiler. construct_domtree (cfg)
268
+ domtree = Compiler. construct_domtree (cfg. blocks )
269
269
@test domtree. dfs_tree. to_pre == [1 , 2 , 4 , 5 , 3 , 6 ]
270
- @test domtree. idoms_bb == Compiler. naive_idoms (cfg) == [0 , 1 , 1 , 3 , 1 , 4 ]
270
+ @test domtree. idoms_bb == Compiler. naive_idoms (cfg. blocks ) == [0 , 1 , 1 , 3 , 1 , 4 ]
271
271
272
272
# Test removal of edge between a parent and child in the DFS tree, which
273
273
# should trigger complete recomputation of domtree (first case in algorithm
274
274
# for removing edge from domtree dynamically)
275
275
Compiler. cfg_delete_edge! (cfg, 2 , 5 )
276
- Compiler. domtree_delete_edge! (domtree, cfg, 2 , 5 )
277
- @test domtree. idoms_bb == Compiler. naive_idoms (cfg) == [0 , 1 , 1 , 3 , 6 , 4 ]
276
+ Compiler. domtree_delete_edge! (domtree, cfg. blocks , 2 , 5 )
277
+ @test domtree. idoms_bb == Compiler. naive_idoms (cfg. blocks ) == [0 , 1 , 1 , 3 , 6 , 4 ]
278
278
# Add edge back (testing first case for insertion)
279
279
Compiler. cfg_insert_edge! (cfg, 2 , 5 )
280
- Compiler. domtree_insert_edge! (domtree, cfg, 2 , 5 )
281
- @test domtree. idoms_bb == Compiler. naive_idoms (cfg) == [0 , 1 , 1 , 3 , 1 , 4 ]
280
+ Compiler. domtree_insert_edge! (domtree, cfg. blocks , 2 , 5 )
281
+ @test domtree. idoms_bb == Compiler. naive_idoms (cfg. blocks ) == [0 , 1 , 1 , 3 , 1 , 4 ]
282
282
283
283
# Test second case in algorithm for removing edges from domtree, in which
284
284
# `from` is on a semidominator path from the semidominator of `to` to `to`
285
285
Compiler. cfg_delete_edge! (cfg, 6 , 5 )
286
- Compiler. domtree_delete_edge! (domtree, cfg, 6 , 5 )
287
- @test domtree. idoms_bb == Compiler. naive_idoms (cfg) == [0 , 1 , 1 , 3 , 2 , 4 ]
286
+ Compiler. domtree_delete_edge! (domtree, cfg. blocks , 6 , 5 )
287
+ @test domtree. idoms_bb == Compiler. naive_idoms (cfg. blocks ) == [0 , 1 , 1 , 3 , 2 , 4 ]
288
288
# Add edge back (testing second case for insertion)
289
289
Compiler. cfg_insert_edge! (cfg, 6 , 5 )
290
- Compiler. domtree_insert_edge! (domtree, cfg, 6 , 5 )
291
- @test domtree. idoms_bb == Compiler. naive_idoms (cfg) == [0 , 1 , 1 , 3 , 1 , 4 ]
290
+ Compiler. domtree_insert_edge! (domtree, cfg. blocks , 6 , 5 )
291
+ @test domtree. idoms_bb == Compiler. naive_idoms (cfg. blocks ) == [0 , 1 , 1 , 3 , 1 , 4 ]
292
292
293
293
# Test last case for removing edges, in which edge does not satisfy either
294
294
# of the above conditions
295
295
Compiler. cfg_delete_edge! (cfg, 6 , 3 )
296
- Compiler. domtree_delete_edge! (domtree, cfg, 6 , 3 )
297
- @test domtree. idoms_bb == Compiler. naive_idoms (cfg) == [0 , 1 , 1 , 3 , 1 , 4 ]
296
+ Compiler. domtree_delete_edge! (domtree, cfg. blocks , 6 , 3 )
297
+ @test domtree. idoms_bb == Compiler. naive_idoms (cfg. blocks ) == [0 , 1 , 1 , 3 , 1 , 4 ]
298
298
# Add edge back (testing second case for insertion)
299
299
Compiler. cfg_insert_edge! (cfg, 6 , 3 )
300
- Compiler. domtree_insert_edge! (domtree, cfg, 6 , 3 )
301
- @test domtree. idoms_bb == Compiler. naive_idoms (cfg) == [0 , 1 , 1 , 3 , 1 , 4 ]
300
+ Compiler. domtree_insert_edge! (domtree, cfg. blocks , 6 , 3 )
301
+ @test domtree. idoms_bb == Compiler. naive_idoms (cfg. blocks ) == [0 , 1 , 1 , 3 , 1 , 4 ]
302
302
303
303
# Try removing all edges from root
304
304
Compiler. cfg_delete_edge! (cfg, 1 , 2 )
305
- Compiler. domtree_delete_edge! (domtree, cfg, 1 , 2 )
306
- @test domtree. idoms_bb == Compiler. naive_idoms (cfg) == [0 , 0 , 1 , 3 , 6 , 4 ]
305
+ Compiler. domtree_delete_edge! (domtree, cfg. blocks , 1 , 2 )
306
+ @test domtree. idoms_bb == Compiler. naive_idoms (cfg. blocks ) == [0 , 0 , 1 , 3 , 6 , 4 ]
307
307
Compiler. cfg_delete_edge! (cfg, 1 , 3 )
308
- Compiler. domtree_delete_edge! (domtree, cfg, 1 , 3 )
309
- @test domtree. idoms_bb == Compiler. naive_idoms (cfg) == [0 , 0 , 0 , 0 , 0 , 0 ]
308
+ Compiler. domtree_delete_edge! (domtree, cfg. blocks , 1 , 3 )
309
+ @test domtree. idoms_bb == Compiler. naive_idoms (cfg. blocks ) == [0 , 0 , 0 , 0 , 0 , 0 ]
310
310
# Add edges back
311
311
Compiler. cfg_insert_edge! (cfg, 1 , 2 )
312
- Compiler. domtree_insert_edge! (domtree, cfg, 1 , 2 )
313
- @test domtree. idoms_bb == Compiler. naive_idoms (cfg) == [0 , 1 , 0 , 0 , 2 , 0 ]
312
+ Compiler. domtree_insert_edge! (domtree, cfg. blocks , 1 , 2 )
313
+ @test domtree. idoms_bb == Compiler. naive_idoms (cfg. blocks ) == [0 , 1 , 0 , 0 , 2 , 0 ]
314
314
Compiler. cfg_insert_edge! (cfg, 1 , 3 )
315
- Compiler. domtree_insert_edge! (domtree, cfg, 1 , 3 )
316
- @test domtree. idoms_bb == Compiler. naive_idoms (cfg) == [0 , 1 , 1 , 3 , 1 , 4 ]
315
+ Compiler. domtree_insert_edge! (domtree, cfg. blocks , 1 , 3 )
316
+ @test domtree. idoms_bb == Compiler. naive_idoms (cfg. blocks ) == [0 , 1 , 1 , 3 , 1 , 4 ]
317
317
end
0 commit comments