119 lines
3.1 KiB
Markdown
119 lines
3.1 KiB
Markdown
# MIR進化計画: MIR14 → MIR13 → MIR17
|
||
|
||
## 概要
|
||
|
||
LoopForm導入に向けた段階的なMIR進化戦略。PHI命令の責務をLLVM層に移管し、より高レベルな制御構造表現を導入する。
|
||
|
||
## 命令数の変遷
|
||
|
||
```
|
||
MIR14(現在): 14命令(PHIあり)
|
||
↓ Phase 15終盤
|
||
MIR13: 13命令(PHI除去)
|
||
↓ Phase 16
|
||
MIR17: 17命令(LoopForm追加)
|
||
```
|
||
|
||
## MIR13(Phase 15終盤)
|
||
|
||
### 削除される命令
|
||
- **Phi**: SSA PHIノードの生成をLLVM層に移管
|
||
|
||
### 残る13命令
|
||
1. Const
|
||
2. Load / Store
|
||
3. UnaryOp / BinOp / Compare / TypeOp
|
||
4. Branch / Jump / Return
|
||
5. NewBox / BoxCall
|
||
6. ExternCall / Call
|
||
7. Throw / Catch(既存維持)
|
||
|
||
### 実装方針
|
||
- Bridge/BuilderはPHIを生成しない
|
||
- LLVM層(llvmlite/Resolver)がCFGパターンからPHIを合成
|
||
- VM/Interpreterは直線的実行を継続(PHI無視)
|
||
|
||
## MIR17(Phase 16)
|
||
|
||
### 追加される4命令(LoopForm)
|
||
|
||
1. **LoopHeader** `{ id, params[] }`
|
||
- ループヘッダBBの宣言
|
||
- params[]はループ搬送値のプレースホルダ
|
||
|
||
2. **LoopEnter** `{ header: bb, args[] }` (terminator)
|
||
- Preheaderからヘッダへの遷移
|
||
- args[]は搬送値の初期値
|
||
|
||
3. **LoopLatch** `{ header: bb, args[] }` (terminator)
|
||
- 本体末尾からヘッダへのバックエッジ
|
||
- args[]は更新後の搬送値
|
||
|
||
4. **LoopExit** `{ exit: bb }` (terminator)
|
||
- ループからの脱出(break相当)
|
||
|
||
### なぜ+4命令か
|
||
- ループの構造を明示的に表現
|
||
- Preheader/Header/Body/Exitの役割を宣言的に
|
||
- LLVM層でのPHI生成が機械的に可能
|
||
|
||
## 合流点の扱い(将来検討)
|
||
|
||
### MergeForm(追加候補)
|
||
```rust
|
||
// If/Else等の合流用(将来のMIR18以降)
|
||
MergeHeader { id, params[] }
|
||
MergeEnter { header: bb, args[] }
|
||
```
|
||
|
||
## 移行のメリット
|
||
|
||
1. **責務分離の明確化**
|
||
- MIR: 制御構造の宣言
|
||
- LLVM: SSA表現の生成
|
||
|
||
2. **段階的移行**
|
||
- Phase 15: PHI生成を止める(互換性維持)
|
||
- Phase 16: LoopForm導入(新機能)
|
||
|
||
3. **将来拡張への道筋**
|
||
- Generator/Async/Effectへの対応準備
|
||
- LifeBox Model(LBM)への布石
|
||
|
||
## AI協働の記録(2025-09-16)
|
||
|
||
### Codex提案
|
||
- PHI合成をllvmlite側で実施
|
||
- LoopForm/MergeFormの構造化表現
|
||
- TryRegionによる例外構造化(将来)
|
||
|
||
### 人間の洞察
|
||
- 「MIR13に減らしてから+4でMIR17」
|
||
- 段階的移行の重要性
|
||
- 一気に変えないことの価値
|
||
|
||
### 合意形成
|
||
- Phase 15でまずPHI非生成化
|
||
- 安定後にLoopForm導入
|
||
- 責務分離を徹底
|
||
|
||
## 実装チェックリスト
|
||
|
||
### Phase 15終盤(MIR13化)
|
||
- [ ] Bridge: PHI生成を無効化するフラグ
|
||
- [ ] llvmlite: Resolver実装(PHI合成)
|
||
- [ ] Smoke: ループ搬送値のテスト
|
||
- [ ] VM: PHI無視の動作確認
|
||
|
||
### Phase 16(MIR17化)
|
||
- [ ] MIR: LoopForm命令の追加
|
||
- [ ] Bridge: Loop構造の認識とLoopForm生成
|
||
- [ ] llvmlite: LoopFormからPHIへの変換
|
||
- [ ] ドキュメント: MIR17仕様書
|
||
|
||
## 関連文献
|
||
|
||
- 論文A(MIR13/14): 基本設計
|
||
- 論文D(SSA構築): PHI生成の理論
|
||
- 論文E(本稿): LoopForm理論
|
||
- CURRENT_TASK.md: 実装計画 |