From d4e7ba552ac742a70beed73deb0f61a9569a0822 Mon Sep 17 00:00:00 2001 From: Folkert Date: Wed, 13 Jan 2021 21:25:14 +0100 Subject: [PATCH] add jp id --- compiler/mono/src/decision_tree.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/compiler/mono/src/decision_tree.rs b/compiler/mono/src/decision_tree.rs index 95b2e772f8..c943ef6596 100644 --- a/compiler/mono/src/decision_tree.rs +++ b/compiler/mono/src/decision_tree.rs @@ -913,8 +913,9 @@ pub fn optimize_when<'a>( for (index, branch) in indexed_branches.into_iter() { let ((branch_index, choice), opt_jump) = create_choices(&target_counts, index, branch); - if let Some(jump) = opt_jump { - jumps.push(jump); + if let Some((index, body)) = opt_jump { + let id = JoinPointId(env.unique_symbol()); + jumps.push((index, id, body)); } choices.insert(branch_index, choice); @@ -1336,7 +1337,7 @@ fn decide_to_branching<'a>( cond_layout: Layout<'a>, ret_layout: Layout<'a>, decider: Decider<'a, Choice<'a>>, - jumps: &Vec<(u64, Stmt<'a>)>, + jumps: &Vec<(u64, JoinPointId, Stmt<'a>)>, ) -> Stmt<'a> { use Choice::*; use Decider::*; @@ -1345,9 +1346,9 @@ fn decide_to_branching<'a>( match decider { Leaf(Jump(label)) => { - let (_, expr) = jumps + let (_, _, expr) = jumps .iter() - .find(|(l, _)| l == &label) + .find(|(l, _, _)| l == &label) .expect("jump not in list of jumps"); expr.clone() }