chore: Update docs/private submodule (Phase 36 final docs)
Phase 36 documentation completion: - PHI_BOX_INVENTORY.md updated with reduction records - README.md/TASKS.md completion status - CURRENT_TASK.md Phase 36 section added 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -1217,6 +1217,66 @@ LoopScopeShape → CaseAContext::from_scope() → lower_case_a_X_core() → Join
|
||||
- チェックリスト進捗サマリー更新
|
||||
- **効果**: 再発防止、開発者オンボーディング改善
|
||||
|
||||
---
|
||||
|
||||
### 1-00k. Phase 36 — PHI Box Midrange Reduction(LoopSnapshotMergeBox & PhiBuilderBox)(**完了** 2025-11-29)
|
||||
|
||||
**目的**
|
||||
- Phase 35 での HIGH 安全度削除(`if_body_local_merge.rs` / `phi_invariants.rs` 計 430 行)に続き、MEDIUM 安全度帯の PHI 箱のうち「Loop 側のみ」を縮退させて、JoinIR Frontend(Phase 34)+ LoopScopeShape を PHI 生成 SSOT とする流れをさらに強化する。
|
||||
- 行数削減だけでなく、「どの箱がどの責務を持つか」を明文化し、将来の Phase 37+(If 側 PHI 削減 / Classifier Trio リファクタ)への足場を固める。
|
||||
|
||||
**実装内容サマリ**
|
||||
1. **LoopSnapshotMergeBox の縮退(dead code 100% 削除+純粋静的化)**
|
||||
- 対象: `src/mir/phi_core/loop_snapshot_merge.rs`(元 470 行)。
|
||||
- 完了内容:
|
||||
- 未使用メソッド `merge_continue_for_header()` とそのテスト群を削除(本番 callsite 0)。
|
||||
- PhiInputCollector 側に移譲済みの `optimize_same_value()` / `sanitize_inputs()` とテストを削除。
|
||||
- 未使用フィールド `header_phi_inputs` / `exit_phi_inputs` と `new/Default` 実装を削除し、状態を一切持たない構造に整理。
|
||||
- 本質ロジック `merge_exit_with_classification()` のみを残し、「Exit PHI マージの名前空間」としての静的ユーティリティに縮退。
|
||||
- 結果:
|
||||
- 行数: **470 → 363 行(107 行削減, 22.8% reduction)**
|
||||
- Exit PHI Option C(PHI pred mismatch 防止)ロジックは完全温存。
|
||||
- Phase 36 専用テスト 3 本を追加し、Case A/B/Option C を包括的にカバー。
|
||||
|
||||
2. **PhiBuilderBox の責務マッピング(Loop/If/Common の見える化)**
|
||||
- 対象: `src/mir/phi_core/phi_builder_box.rs`。
|
||||
- 実装方針:
|
||||
- Loop 側専用の薄いラッパ(LoopPhiBuilder)は作らず、既存の API をそのまま維持。
|
||||
- 代わりにファイル先頭と各メソッドに「Responsibility: Loop-only / If-only / Common / Stub」といったマーカーコメントを追加。
|
||||
- 主な分類:
|
||||
- Loop-only: `set_if_context()`(ループ内 if の PHI 文脈設定)、`generate_loop_phis()`(将来の実装ターゲット)。
|
||||
- If-only: `generate_if_phis()`, `compute_modified_names_if()`, `get_conservative_if_values()`。
|
||||
- Common: `new()`, `generate_phis()`。
|
||||
- 効果:
|
||||
- PhiBuilderBox が「Loop PHI 本体」ではなく **if-in-loop PHI 用の共通箱** であることを明示。
|
||||
- Phase 37 以降の If 側 PHI 削減のターゲット範囲がクリアになった。
|
||||
|
||||
3. **ドキュメント更新と PHI インベントリ反映**
|
||||
- `docs/private/roadmap2/phases/phase-36-phi-midrange/README.md`:
|
||||
- 目標 30% に対して実際は 22.8% 削減であること、行数よりも「dead code 全削除+本質ロジック温存」を優先した判断を明文化。
|
||||
- LoopSnapshotMergeBox の役割を「Exit PHI マージ専用の静的ユーティリティ」として再定義。
|
||||
- `docs/private/roadmap2/phases/phase-36-phi-midrange/TASKS.md`:
|
||||
- 36-1.3/1.4, 36-6.1〜6.5 を含む全タスクを完了にマーク。
|
||||
- `docs/private/roadmap2/phases/phase-30-final-joinir-world/PHI_BOX_INVENTORY.md`:
|
||||
- LoopSnapshotMergeBox 行に Phase 36 の縮退内容(dead code 削除+静的化)を追記し、将来 JoinIR/LoopScopeShape 側へ段階移行する計画を明示。
|
||||
|
||||
4. **テスト&リグレッション確認**
|
||||
- LoopSnapshotMergeBox 単体テスト: 3/3 PASS(simple carrier / body-local internal skip / break-only loop)。
|
||||
- LoopFormBuilder 周辺テスト: 14/14 PASS。
|
||||
- Phase 34 JoinIR Frontend テスト(If/Loop/Break/Continue): 6/6 PASS。
|
||||
- `cargo build --release`: 警告ゼロで完了。
|
||||
|
||||
**成果と位置づけ**
|
||||
- Phase 35-5(HIGH 安全度 430 行削除)に続き、Phase 36 で LoopSnapshotMergeBox を安全に 22.8% 縮退し、PHI レイヤの責務を「JoinIR + LoopScopeShape 側が SSOT、本レガシー箱は Exit PHI マージ専用の補助ユーティリティ」として再配置できた。
|
||||
- PhiBuilderBox については Loop 側からの利用を「if-in-loop PHI 用」として位置づけ直し、実体削減は Phase 37+ の If 側 JoinIR 移行完了後に行う方針を固定した。
|
||||
- これにより PHI 関連コードの総削減量は Phase 35-5(430 行)+ Phase 36(107 行)で **合計 537 行** に到達しつつ、Exit/If PHI の本質ロジックと JoinIR Frontend の安定性は維持されている。
|
||||
|
||||
**次のステップ(Phase 37+ の入口メモ)**
|
||||
- Phase 37: If 側 PHI(`conservative.rs` + `if_phi.rs`)の削減検討。
|
||||
- 前提: Phase 33〜34 で整備した IfSelect/IfMerge lowering と JoinIR Frontend の適用範囲を広げること。
|
||||
- Phase 38+: PhiBuilderBox 内部の実体削減(Loop 側は完了済み / If 側の join 関数化)。
|
||||
- Phase 39: Classifier Trio(LoopVarClassBox / LoopExitLivenessBox / LocalScopeInspectorBox)を LoopScopeShape に吸収するアーキテクチャ作業。
|
||||
|
||||
**Phase 0-2 以前の実装内容**
|
||||
1. **NamingBox decode 関数追加** (Step 1: commit a13f14ce)
|
||||
- `decode_static_method(func_name: &str) -> Option<(&str, &str, usize)>`
|
||||
|
||||
Submodule docs/private updated: a4ecd67ea6...7351e002ca
Reference in New Issue
Block a user