From 0dde30ceb836cf91e5d7bc0a94c2b36c986124a5 Mon Sep 17 00:00:00 2001 From: nyash-codex Date: Sun, 7 Dec 2025 01:50:13 +0900 Subject: [PATCH] fix(joinir): Phase 172 P0 - Remap PHI incoming Value IDs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously, PHI incoming values were not being remapped from JoinIR-local ValueIds to Host ValueIds. Only the block IDs were remapped. This fix ensures both block ID and value ID are remapped for PHI instructions during JoinIR merge. Note: trim still fails because condition variable exit values are not being reflected in variable_map (Phase 172-4/5 work needed). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../control_flow/joinir/merge/instruction_rewriter.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mir/builder/control_flow/joinir/merge/instruction_rewriter.rs b/src/mir/builder/control_flow/joinir/merge/instruction_rewriter.rs index e4f0e26b..60ccfb55 100644 --- a/src/mir/builder/control_flow/joinir/merge/instruction_rewriter.rs +++ b/src/mir/builder/control_flow/joinir/merge/instruction_rewriter.rs @@ -194,10 +194,13 @@ pub(super) fn merge_and_rewrite( type_hint: None, } => MirInstruction::Phi { dst, + // Phase 172: Fix P0 - Remap BOTH block ID AND value ID for PHI incoming inputs: inputs .iter() .map(|(bb, val)| { - (local_block_map.get(bb).copied().unwrap_or(*bb), *val) + let remapped_bb = local_block_map.get(bb).copied().unwrap_or(*bb); + let remapped_val = remapper.remap_value(*val); + (remapped_bb, remapped_val) }) .collect(), type_hint: None,