From 1192697c7ec323285745113e500a267c7d59037a Mon Sep 17 00:00:00 2001 From: Remo Senekowitsch Date: Fri, 21 Apr 2023 00:24:32 +0200 Subject: [PATCH] refactor BlockLoweringOrder::new (#6255) Co-authored-by: Falk Zwimpfer <24669719+FalkZ@users.noreply.github.com> Co-authored-by: Moritz Waser --- cranelift/codegen/src/machinst/blockorder.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/cranelift/codegen/src/machinst/blockorder.rs b/cranelift/codegen/src/machinst/blockorder.rs index a67909f462..f6358b9bfb 100644 --- a/cranelift/codegen/src/machinst/blockorder.rs +++ b/cranelift/codegen/src/machinst/blockorder.rs @@ -188,14 +188,10 @@ impl BlockLoweringOrder { // Step 2: walk the postorder from the domtree in reverse to produce our desired node // lowering order, identifying critical edges to split along the way. - let mut lb_to_bindex = FxHashMap::default(); let mut lowered_order = Vec::new(); for &block in domtree.cfg_postorder().iter().rev() { - let lb = LoweredBlock::Orig { block }; - let bindex = BlockIndex::new(lowered_order.len()); - lb_to_bindex.insert(lb.clone(), bindex); - lowered_order.push(lb); + lowered_order.push(LoweredBlock::Orig { block }); if block_out_count[block] > 1 { let range = block_succ_range[block].clone(); @@ -209,14 +205,19 @@ impl BlockLoweringOrder { succ, succ_idx: succ_ix as u32, }; - let bindex = BlockIndex::new(lowered_order.len()); - lb_to_bindex.insert(*lb, bindex); lowered_order.push(*lb); } } } } + let lb_to_bindex = FxHashMap::from_iter( + lowered_order + .iter() + .enumerate() + .map(|(i, &lb)| (lb, BlockIndex::new(i))), + ); + // Step 3: build the successor tables given the lowering order. We can't perform this step // during the creation of `lowering_order`, as we need `lb_to_bindex` to be fully populated // first.