From f524977920322a89d02bf1e3d73b3c030d80a764 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 20 Sep 2017 17:09:54 -0700 Subject: [PATCH] Factor some logic out of seal_ebb_header_block into parts. This allows append_jump_argument to call just the part that it needs instead of the whole of seal_ebb_header_block, which is a nice cleanup on its own, and it also eliminates a cycle from the static call graph. --- lib/frontend/src/ssa.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/frontend/src/ssa.rs b/lib/frontend/src/ssa.rs index 0d3e00c5a9..cd0a6cf7f2 100644 --- a/lib/frontend/src/ssa.rs +++ b/lib/frontend/src/ssa.rs @@ -371,7 +371,12 @@ where let (_, local_side_effects) = self.predecessors_lookup(func, val, var, ebb); side_effects.append(local_side_effects); } + self.mark_ebb_header_block_sealed(block); + side_effects + } + /// Set the `sealed` flag for `block`. + fn mark_ebb_header_block_sealed(&mut self, block: Block) { // Then we mark the block as sealed. match self.blocks[block] { BlockData::EbbBody { .. } => panic!("this should not happen"), @@ -381,7 +386,6 @@ where data.sealed = true; } }; - side_effects } /// Look up in the predecessors of an Ebb the def for a value an decides wether or not @@ -521,7 +525,7 @@ where func.layout.append_ebb(middle_ebb); let block = self.declare_ebb_header_block(middle_ebb); self.blocks[block].add_predecessor(jump_inst_block, jump_inst); - self.seal_ebb_header_block(middle_ebb, func); + self.mark_ebb_header_block_sealed(block); for old_dest in func.jump_tables[jt].as_mut_slice() { if old_dest.unwrap() == dest_ebb { *old_dest = PackedOption::from(middle_ebb);