docs: Phase 260 P2 完了記録 + EdgeCFG SSOT 確立

Update phase-260/README.md:
- Status: P2 完了 (EdgeCFG SSOT確立)
- Add P2 completion record with test results
- Add EdgeCFG SSOT definition (Jump/Branch: terminator SSOT, Return: metadata exception)
- Document unified API (read/write separation)
- Note Option B' trade-off (Return metadata exception)

Update 10-Now.md:
- Add Phase 260 P2 completion entry (2025-12-21)
- Test results: 1368 lib tests, 45/46 smoke, phase258 tail call
- Verification: 0 jump_args references (comments excluded)
- 9 files modified

🤖 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-21 09:39:39 +09:00
parent 901ce767ce
commit fc6eed1b04
2 changed files with 37 additions and 1 deletions

View File

@ -46,6 +46,20 @@
- **Next Action**: **Phase 260 完了**P0.3まで完了)→ **今後は機能側のPhaseへ**Pattern2 LoopBodyLocal promotion 機能実装)
- **分類**: JoinIR Pattern2 機能拡張compiler機能側、CFG基盤整備は完了
## 2025-12-21Phase 260 P2BasicBlock.jump_args 完全削除)✅
- **EdgeCFG SSOT確立完了**: `BasicBlock.jump_args` フィールド削除、edge-args SSOTをterminator operand側に一本化
- **フィールド変更**: `jump_args` → `return_env`Return専用metadata、terminator operandなし
- **API簡略化**: legacy helper 8個削除、terminator更新API保持successors同期漏れ防止
- **Verification簡素化**: dual-source検証削除cfg.rs 62行削除
- **テスト結果**:
- cargo test --lib: 1368 PASS
- quick smoke: 45/46 PASS
- phase258 tail call: PASSReturn env保持確認
- **検証**: `rg 'jump_args' src/` = 0件コメント除く
- **修正ファイル**: 9ファイルbasic_block.rs、handlers 4件、verification、test
- **詳細**: `docs/development/current/main/phases/phase-260/README.md`
## 2025-12-21Phase 260 P0.2/P0.3(モジュール化大工事)✅
- **P0.2**: instruction_rewriter モジュール化

View File

@ -1,6 +1,6 @@
# Phase 260: Block-Parameterized CFGedge-args段階導入
Status: P0.3 完了 ✅
Status: P2 完了 ✅EdgeCFG SSOT確立
Last updated: 2025-12-21
## 進捗(セーブポイント)
@ -18,6 +18,13 @@ Last updated: 2025-12-21
- Phase 2: handlers/call, jump, conditional_method_call, if_merge, nested_if_merge
- **合計抽出**: 15モジュール、約3941行、53単体テスト全てpass
- **統合テスト**: 45/46 pass既知のPattern2 LoopBodyLocal問題1件のみ
- **P2削除: 完了 ✅**
- **BasicBlock.jump_args 完全削除**、edge-args SSOT を terminator operand 側に一本化
- フィールド変更: `jump_args``return_env`Return専用metadata
- API簡略化: legacy helper 8個削除、terminator更新API保持successors同期維持
- Verification簡素化: dual-source検証削除cfg.rs 62行削除
- **テスト結果**: cargo test --lib 1368 PASS、quick smoke 45/46 PASS、phase258 tail call PASS
- **検証**: `rg 'jump_args' src/` = 0件コメント除く
## P0.2/P0.3 モジュール分割の責務一覧
@ -50,6 +57,21 @@ Last updated: 2025-12-21
**PHI preservation**: block_finalizer.rsでPhase 189 FIXPHI命令をブロック先頭保持を維持
**Phase metadata保持**: Phase 131 P2安定ValueId、Phase 246-EXlegacy jump_args、Phase 256 P1.9continuation名前解決の契約を全て保持
### EdgeCFG SSOT確立P2完了後
**Edge-args の SSOT定義**:
- **Jump/Branch**: terminator operand `edge_args` が SSOT ✅
- **Return**: metadata `return_env` が SSOT例外、terminator に operand フィールドなし)⚠️
**統一API**:
- **読み出し**: `out_edges()`, `edge_args_to()`, `edge_args_from_terminator()`
- **書き込み**: `set_jump_with_edge_args()`, `set_branch_with_edge_args()`, `set_return_env()`
- 直代入禁止successors 同期漏れ防止、Phase 260/261の核心成果
**妥協点の明記**:
- Returnは「CFG successorを持たない」semantic上の特殊ケースのため、metadata許容
- 理想形Option AはReturn terminatorにenvフィールド追加だが、P2では工数削減のためOption B'採用
## 目的P0
JoinIR→MIR の暗黙 ABIjump_args / carriers / expr_result slot / successorsを減らし、将来的な **block-parameterized CFG**edge-args を第一級に持つCFGへ収束するための「大工事パート」を開始する。