nyash-codex
68ec29593c
feat(phi): Phase 26-F-4 - LoopExitLivenessBox実装完了(環境変数ガード付き)
4箱構成による責務分離完成 + 段階的実装戦略
# 実装内容
## 1. LoopExitLivenessBox新設 (loop_exit_liveness.rs)
- Exit後で実際に使われる変数の決定専門箱
- Phase 1: 空のlive_at_exit返却(MIRスキャン実装待ち)
- 環境変数制御:
- デフォルト: Phase 26-F-3相当の挙動
- NYASH_EXIT_LIVE_ENABLE=1: 将来のMIRスキャン実装を有効化(実験用)
- デバッグトレース: NYASH_EXIT_LIVENESS_TRACE=1
## 2. BodyLocalPhiBuilder拡張 (body_local_phi_builder.rs)
- live_at_exitパラメータ追加
- OR判定ロジック実装(環境変数ガード付き)
- Pinned/Carrier/BodyLocalExit → 既存ロジック
- BodyLocalInternal → live_at_exit + 全pred定義チェックで救済
- is_available_in_all()チェックで安全性確保
## 3. ExitPhiBuilder統合 (exit_phi_builder.rs)
- LoopExitLivenessBox呼び出し
- live_at_exit計算とBodyLocalPhiBuilderへの渡し
## 4. モジュール登録 (mod.rs)
- loop_exit_liveness追加
# 4箱構成完成
1. LoopVarClassBox - スコープ分類(Pinned/Carrier/BodyLocal*)
2. LoopExitLivenessBox - Exit後の実際の使用(新設)
3. BodyLocalPhiBuilder - 統合判定(OR論理)
4. PhiInvariantsBox - Fail-Fast検証
# テスト結果
- Phase 26-F-3: 358 PASS / 13 FAIL
- Phase 26-F-4 (デフォルト): 365 PASS / 9 FAIL ✅
- +7 PASS、-4 FAIL(大幅改善)
- Phase 26-F-4 (NYASH_EXIT_LIVE_ENABLE=1): 362 PASS / 12 FAIL
- MIRスキャン実装待ちのため、デフォルトより若干悪化
# ChatGPT設計戦略採用
- 箱理論による責務の明確な分離
- 環境変数ガードによる段階的実装
- 将来のMIRスキャン実装に備えた基盤確立
- デフォルトで安全側(Phase 26-F-3相当)
# 将来計画 (Phase 2+)
MIRスキャン実装でlive_at_exit精密化:
- LoopFormOps拡張(get_block_instructions()追加)
- Exit ブロックのMIR読み取り
- Copy/BinOp/Call等で使われるValueId収集
- BodyLocalInternal変数も実際の使用に基づき救済
Test: 365 PASS / 9 FAIL (+7 PASS from Phase 26-F-3)
2025-11-22 18:26:40 +09:00
..
2025-11-21 06:25:17 +09:00
2025-11-21 06:25:17 +09:00
2025-11-22 05:33:40 +09:00
2025-09-24 14:13:15 +09:00
2025-08-18 21:10:06 +09:00
2025-08-18 20:53:48 +09:00
2025-09-25 01:09:48 +09:00
2025-11-21 06:25:17 +09:00
2025-11-21 06:25:17 +09:00
2025-11-21 06:25:17 +09:00
2025-11-21 06:25:17 +09:00
2025-11-21 06:25:17 +09:00
2025-09-17 07:43:07 +09:00
2025-11-21 06:25:17 +09:00
2025-11-21 11:16:38 +09:00
2025-11-22 05:33:40 +09:00
2025-11-21 09:38:49 +09:00
2025-11-21 06:25:17 +09:00
2025-09-17 07:43:07 +09:00
2025-11-22 18:26:40 +09:00
2025-11-21 06:25:17 +09:00
2025-11-21 06:25:17 +09:00
2025-11-10 23:17:46 +09:00
2025-11-22 05:33:40 +09:00
2025-11-21 06:25:17 +09:00
2025-09-23 02:15:56 +09:00
2025-11-21 06:25:17 +09:00
2025-09-17 07:43:07 +09:00
2025-11-22 11:03:21 +09:00
2025-11-21 06:25:17 +09:00
2025-09-17 07:43:07 +09:00
2025-11-21 06:25:17 +09:00
2025-11-21 06:25:17 +09:00
2025-11-20 03:56:12 +09:00
2025-11-21 06:25:17 +09:00
2025-11-21 06:25:17 +09:00
2025-11-21 06:25:17 +09:00
2025-09-17 07:43:07 +09:00
2025-11-13 18:55:14 +09:00
2025-09-17 07:43:07 +09:00
2025-09-17 07:43:07 +09:00
2025-11-21 06:25:17 +09:00
2025-11-21 06:25:17 +09:00
2025-11-21 06:25:17 +09:00
2025-09-17 07:43:07 +09:00
2025-09-17 07:43:07 +09:00
2025-11-21 06:25:17 +09:00
2025-09-17 07:43:07 +09:00
2025-09-19 12:13:43 +09:00
2025-09-17 07:43:07 +09:00
2025-09-17 07:43:07 +09:00