phase29aa(p6): intersect multi-pred return join state
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
# Phase 29aa: RC insertion safety expansion(CFG-aware design)
|
||||
|
||||
Status: P6 Ready (Multi-predecessor Return join - intersection)
|
||||
Status: P6 Complete (Multi-predecessor Return join - intersection)
|
||||
Scope: Phase 29z の単一block限定実装から、誤releaseを起こさない形で CFG-aware に拡張するための設計を固める。
|
||||
|
||||
Entry:
|
||||
@ -85,8 +85,17 @@ P6 SSOT:
|
||||
- cleanup は Return block の BeforeTerminator のみ(Jump/Branch block には入れない)
|
||||
- join state は `intersection`(全 predecessor の end_state に同じ ptr が存在し、かつ value が同一のものだけ)
|
||||
- intersection が empty の場合は cleanup しない
|
||||
- subset/partial merge は許可するが、PHI 的な “値の合成” はしない(同一値のみ)
|
||||
- subset/partial merge は許可するが、PHI 的な "値の合成" はしない(同一値のみ)
|
||||
- Non-goals:
|
||||
- PHI/loop/early-exit の cleanup
|
||||
- value が一致しない ptr を release 対象に含めること
|
||||
- Jump block への release 挿入(P2維持)
|
||||
- Conservative:
|
||||
- intersection は「安全だが保守的」。value 不一致の ptr は release されない=リーク方向
|
||||
- P5 でも同じく release できてなかったケースなので回帰にはならないが、完全なメモリ回収には将来の PHI 対応が必要
|
||||
- Acceptance:
|
||||
- quick 154/154 PASS 維持
|
||||
- `cargo run --bin rc_insertion_selfcheck --features rc-insertion-minimal` PASS
|
||||
- selfcheck Case 3.9(部分一致 → Return block に 1 cleanup、intersection = v1)PASS
|
||||
- selfcheck Case 3.10(intersection 空 → 全ブロック 0 cleanup)PASS
|
||||
- 既定OFF維持(featureなしは no-op)
|
||||
|
||||
Reference in New Issue
Block a user