docs: record Phase 265/266 EdgeCFG progress and research note
This commit is contained in:
@ -5,6 +5,7 @@ Scope: JoinIR→MIR の「暗黙 ABI」を消し、Join を第一級に扱う CF
|
||||
Related:
|
||||
- Navigation SSOT: `docs/development/current/main/design/joinir-design-map.md`
|
||||
- Investigation (Phase 256): `docs/development/current/main/investigations/phase-256-joinir-contract-questions.md`
|
||||
- Structured→CFG lowering SSOT(Frag/ExitKind): `docs/development/current/main/design/edgecfg-fragments.md`
|
||||
- Decisions: `docs/development/current/main/20-Decisions.md`
|
||||
- Future features (catch/cleanup, cleanup/defer, async): `docs/development/current/main/design/exception-cleanup-async.md`
|
||||
|
||||
@ -122,3 +123,15 @@ Strangler 期間は “読む側だけ寄せる” と取りこぼしが起き
|
||||
- `set_terminator(...)` のような入口に寄せ、successors/preds の同期漏れを構造で潰す
|
||||
- **verify(Fail-Fast)**
|
||||
- terminator から計算した successors と、キャッシュ `block.successors` の一致をチェックして “同期漏れ” を即死させる
|
||||
|
||||
## pattern(番号)の位置づけ(収束のさせ方)
|
||||
|
||||
重要: “pattern番号で分岐する” こと自体は長期的には消したい(臭い)。ただし **IR上の形(terminator/exit種別)で分岐する**のは普通で、むしろ正しい。
|
||||
|
||||
収束方針:
|
||||
|
||||
- EdgeCFG の基盤が固まった後、Structured→CFG lowering の中心概念を **pattern番号**ではなく **ExitKind と Frag(fragment)**に移す
|
||||
- pattern は “Extractor(形の認識)/ Plan(最小要件の抽出)” までに縮退し、merge/配線層へ逆流させない
|
||||
- 最終的に残る実装は `seq/if/loop/cleanup` 等の **合成則**と、`join(block params)` だけになる
|
||||
|
||||
設計SSOT: `docs/development/current/main/design/edgecfg-fragments.md`
|
||||
|
||||
Reference in New Issue
Block a user