diff --git a/src/mir/join_ir_vm_bridge/meta.rs b/src/mir/join_ir_vm_bridge/meta.rs index ffab093d..ec1f7043 100644 --- a/src/mir/join_ir_vm_bridge/meta.rs +++ b/src/mir/join_ir_vm_bridge/meta.rs @@ -1,5 +1,5 @@ // Phase 190: Use modularized converter -use super::{join_func_name, JoinIrFunctionConverter, JoinIrVmBridgeError}; +use super::{JoinIrFunctionConverter, JoinIrVmBridgeError}; use crate::mir::join_ir::frontend::JoinFuncMetaMap; use crate::mir::join_ir::JoinModule; use crate::mir::{MirFunction, MirModule}; @@ -41,27 +41,30 @@ pub fn convert_join_module_to_mir_with_meta( let mir_func = JoinIrFunctionConverter::convert_function(join_func)?; // Phase 189 DEBUG: Dump MirFunction blocks to check PHI presence - eprintln!( + // Guarded to avoid polluting stdout/stderr in normal runs. + debug_log!( "[joinir/meta] MirFunc '{}' has {} blocks after convert_function:", mir_func.signature.name, mir_func.blocks.len() ); - for (block_id, block) in &mir_func.blocks { - let phi_count = block - .instructions - .iter() - .filter(|i| matches!(i, crate::mir::MirInstruction::Phi { .. })) - .count(); - eprintln!( - "[joinir/meta] Block {:?}: {} instructions ({} PHI), terminator={:?}", - block_id, - block.instructions.len(), - phi_count, - block - .terminator - .as_ref() - .map(|t| format!("{:?}", t).chars().take(40).collect::()) - ); + if crate::config::env::joinir_vm_bridge_debug() { + for (block_id, block) in &mir_func.blocks { + let phi_count = block + .instructions + .iter() + .filter(|i| matches!(i, crate::mir::MirInstruction::Phi { .. })) + .count(); + debug_log!( + "[joinir/meta] Block {:?}: {} instructions ({} PHI), terminator={:?}", + block_id, + block.instructions.len(), + phi_count, + block + .terminator + .as_ref() + .map(|t| format!("{:?}", t).chars().take(40).collect::()) + ); + } } // 3. Phase 40-1: if_modified_varsがあればloop exit PHI生成 @@ -78,9 +81,13 @@ pub fn convert_join_module_to_mir_with_meta( } } + // Phase 256 P1.7: Use actual function name instead of join_func_name() + // join_func_name() produces "join_func_{id}" but JoinFunction.name contains + // the actual name ("main", "loop_step", "k_exit"). + // The merge code looks up functions by name, so we must use the actual name. mir_module .functions - .insert(join_func_name(*func_id), mir_func); + .insert(join_func.name.clone(), mir_func); } Ok(mir_module)