feat(joinir): Phase 256 P1.5 - JoinInst::Select 命令サポート(根治)

## 変更内容

Task 1(既完了): boundary パラメータを bridge 経路全体に伝播
- conversion_pipeline.rs, bridge.rs(複数箇所), meta.rs, routing_legacy_binding.rs, execute_box.rs

Task 2-A~2-D: Select 命令の実装
- 2-A: MirInstruction::Select バリアント追加
- 2-B: JoinIR Select → MIR Select 直接変換(branch+phi展開廃止)
- 2-C:  joinir_id_remapper に Select remap case(ValueId変換の根治)
- 2-D: value_collector に Select case

## 根本原因解決

Pattern7 の JoinInst::Select が JoinIR→MIR で未対応
→ ValueId(1002) → ValueId(57) のリマップが行われず
→ "use of undefined value ValueId(57)" エラー

## 現在地

 cargo check: 0 errors
 Pattern7/6 VM test(Task 2-E LLVM実装後)

🧠 Generated with Claude Code
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-20 03:11:58 +09:00
parent 64f679354a
commit bfd324d7b9
8 changed files with 196 additions and 70 deletions

View File

@ -94,9 +94,9 @@ impl JoinIRConversionPipeline {
);
// Step 2: JoinModule → MirModule conversion
// Pass empty meta map since minimal lowerers don't use metadata
// Phase 256 P1.5: Pass boundary to bridge for ValueId remapping
let empty_meta: JoinFuncMetaMap = BTreeMap::new();
let mir_module = bridge_joinir_to_mir_with_meta(&join_module, &empty_meta)
let mir_module = bridge_joinir_to_mir_with_meta(&join_module, &empty_meta, boundary)
.map_err(|e| format!("[{}/pipeline] MIR conversion failed: {:?}", pattern_name, e))?;
// Step 3: Log MIR stats (functions and blocks)