fix(joinir): Phase 283 P0 - Pattern3 Undefined ValueId Bug Fix

- Fix: extract_if_condition() moved after local_cond_env construction
  (loop_with_if_phi_if_sum.rs:175)
  - Root cause: condition extraction before i_param/sum_param creation
  - Result: i % 2 referenced caller's ConditionEnv with unmapped ValueId
- Fail-Fast: Add condition_bindings validation in merge (mod.rs)
- Fixture: Update loop_if_phi.hako for C2 compatibility (sum.toString())
- Verified: VM execution outputs sum=9 

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-23 08:14:27 +09:00
parent 32ccccd272
commit bfbc9b26bf
6 changed files with 114 additions and 31 deletions

View File

@ -2,16 +2,15 @@
## Current Focus (next)
- Phase 281design-first: `docs/development/current/main/phases/phase-281/README.md`
- P1 planned: Pattern6early-exitを compose に寄せる(挙動不変で段階移行)
- SSOT: `docs/development/current/main/design/edgecfg-fragments.md`, `src/mir/builder/control_flow/edgecfg/api/compose.rs`
- Phase 282planned, design-first: Router shrinkage
- pattern番号を “症状ラベル(テスト名)” に降格し、合成SSOTへ寄せた後に router を縮退させる
- Phase 283bugfix: JoinIR if-condition remap fix: `docs/development/current/main/phases/phase-283/README.md`
- 目的: Pattern3if-sum`i % 2 == 1` が undefined `ValueId` を生成する不具合を根治する
- SSOT: `src/mir/join_ir/lowering/loop_with_if_phi_if_sum.rs`ConditionEnv の正しい使用位置)
## Recently Completed (2025-12-23)
- Phase 282Router shrinkage + extraction-based migration P0P5: `docs/development/current/main/phases/phase-282/README.md`
- Phase 280Frag composition SSOT positioning: `docs/development/current/main/phases/phase-280/README.md`
- Phase 281 P0Pattern7 → compose::if_: `docs/development/current/main/phases/phase-281/README.md`
- Phase 281Pattern6/7 compose adoption, P0P3: `docs/development/current/main/phases/phase-281/README.md`
- Phase 273Plan line SSOT: `docs/development/current/main/phases/phase-273/README.md`
- Phase 275 P0A1/B2/C2 coercion SSOT: `docs/development/current/main/phases/phase-275/README.md`
- Phase 276 P0quick wins / type_helper SSOT: `docs/development/current/main/phases/phase-276/README.md`