feat(edgecfg): Phase 265 P1 - compose 配線ロジック実装(test-only PoC)
## 目的 Frag/ExitKind が BasicBlockId 層で配線できることを証明 ## 実装完了内容 - EdgeStub に target: Option<BasicBlockId> 追加 - compose::loop_() 配線ロジック実装(Continue → header, Break → after) - verify_frag_invariants() 配線契約検証追加 - test-only PoC で実証完了(5個のテスト) ## 配線契約 - Continue(loop_id) の EdgeStub.target = Some(header) - Break(loop_id) の EdgeStub.target = Some(after) - Normal/Return/Unwind の EdgeStub.target = None(上位へ伝搬) ## テスト - compose::tests: 5 PASS(既存2個更新 + 新規3個追加) - verify::tests: 1 PASS(基本smoke test) - cargo test -p nyash-rust --lib: SUCCESS ## 重要な制約 - MIR 命令生成はまだしない(Frag 層の配線能力証明のみ) - NormalizedShadow/JoinIR層への適用は Phase 266 に繰り越し - Pattern6/7/8 未改変(配線能力の証明に集中) ## 次のステップ - Phase 265 P2: seq/if_ 実装(順次合成・条件分岐合成) - Phase 266: JoinIR-VM Bridge 改修後、NormalizedShadow への適用 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -95,6 +95,22 @@ Related:
|
||||
- 配線ロジックは P1 以降
|
||||
- **次**: Phase 265 P1 で配線ロジック + Pattern8適用
|
||||
|
||||
- **Phase 265 P1(✅ 完了): compose 配線ロジック実装**
|
||||
- **目的**: Frag/ExitKind の配線能力を BasicBlockId 層で証明
|
||||
- **実装**:
|
||||
- EdgeStub.target 追加(Option<BasicBlockId>)
|
||||
- compose::loop_() 配線ロジック(Continue → header, Break → after)
|
||||
- verify_frag_invariants() 配線契約検証
|
||||
- test-only PoC(5個のテスト: 既存2個更新 + 新規3個追加)
|
||||
- **配線契約**:
|
||||
- Continue(loop_id) の EdgeStub.target = Some(header)
|
||||
- Break(loop_id) の EdgeStub.target = Some(after)
|
||||
- Normal/Return/Unwind の EdgeStub.target = None(上位へ伝搬)
|
||||
- **制約**:
|
||||
- MIR 命令生成なし(Frag 層のみ)
|
||||
- NormalizedShadow 未適用(Phase 266 に繰り越し)
|
||||
- **次**: Phase 265 P2 で seq/if_ 実装
|
||||
|
||||
- **real-app loop regression の横展開(VM + LLVM EXE)**
|
||||
- ねらい: 実コード由来ループを 1 本ずつ最小抽出して fixture/smoke で固定する(段階投入)。
|
||||
- 現状: Phase 107(find_balanced_array/object / json_cur 由来)まで固定済み。
|
||||
|
||||
Reference in New Issue
Block a user