tomoaki
60cffb1948
feat(phase275-p0): Float型PHI完全対応 - MIR型伝播→LLVM IR生成
Phase 275 P0: Float型PHIノードの完全実装
【問題】
- PHI v36 が i64 型で生成されるが、incoming value v12 が f64 型
- LLVM IR parsing error: 型不一致により実行失敗
【解決】
1. MIR型伝播順序修正 (lifecycle.rs)
- BinOp repropagation → PHI resolution に変更
- Int+Float → Float promotion を PHI推論前に実行
2. MIR JSON Float型出力 (mir_json_emit.rs)
- PHI dst_type に Float case 追加(2箇所)
3. LLVM PHI型対応 (wiring.py, tagging.py, llvm_builder.py)
- ensure_phi に dst_type パラメータ追加
- f64 の場合 ir.DoubleType() PHI 生成
- 型互換性チェック付き predeclared PHI 再利用
4. LLVM Float演算対応
- compare.py: ensure_double helper (Float unboxing for fcmp)
- binop.py: Int+Float → sitofp→fadd (unboxed double)
【検証】
- LLVM IR: phi double [%"float_int_add", %"bb0"] ✅
- VM/LLVM parity: exit=3 ✅
- PHI duplicate 解消: 型チェックで再利用 ✅
【影響範囲】
- Rust MIR builder: 3ファイル (型伝播ロジック)
- LLVM harness: 5ファイル (PHI型対応)
- Kernel: 1ファイル (box_from_f64 helper - 予備)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>