fix(joinir): Phase 172 P0 - Remap PHI incoming Value IDs
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 <noreply@anthropic.com>
This commit is contained in:
@ -194,10 +194,13 @@ pub(super) fn merge_and_rewrite(
|
|||||||
type_hint: None,
|
type_hint: None,
|
||||||
} => MirInstruction::Phi {
|
} => MirInstruction::Phi {
|
||||||
dst,
|
dst,
|
||||||
|
// Phase 172: Fix P0 - Remap BOTH block ID AND value ID for PHI incoming
|
||||||
inputs: inputs
|
inputs: inputs
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(bb, val)| {
|
.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(),
|
.collect(),
|
||||||
type_hint: None,
|
type_hint: None,
|
||||||
|
|||||||
Reference in New Issue
Block a user