Files
hakorune/docs/private/papers/paper-d-ssa-construction/README.md
Selfhosting Dev 4c0e6726e3 🔧 refactor(llvm-py): Fix resolver PHI handling and add trace improvements
Changes to resolver.py:
- Improved PHI value tracking in _value_at_end_i64() (lines 268-285)
- Added trace logging for snap hits with PHI detection
- Fixed PHI placeholder reuse logic to preserve dominance
- PHI values now returned directly from snapshots when valid

Changes to llvm_builder.py:
- Fixed externcall instruction parsing (line 522: 'func' instead of 'name')
- Improved block snapshot tracing (line 439)
- Added PHI incoming metadata tracking (lines 316-376)
- Enhanced definition tracking for lifetime hints

This should help debug the string carry=0 issue in esc_dirname_smoke where
PHI values were being incorrectly coerced instead of preserved.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-14 16:25:21 +09:00

100 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 論文D: Box理論によるSSA構築の革命的簡略化
- タイトル(案): Box-Based SSA Construction: A Practical Solution to LLVM Backend Complexity
- 副題: From 650 Lines of Struggle to 100 Lines of Clarity
- 略称: Nyash SSA Paper
- ステータス: 執筆中(実装経験と新解法を基に)
## 要旨
Box指向言語NyashのLLVMバックエンドにおけるSSAStatic Single Assignment形式構築の実践的課題と、その革命的な解決策を提示する。従来の複雑なPHI配置、dominance管理、型変換処理に苦闘した650行の実装を、「箱理論」という新しいメンタルモデルにより100行まで簡略化。実装の複雑さを85%削減し、デバッグ時間を90%短縮した実例を通じて、理論と実装のギャップを埋める新しいアプローチを示す。
## 位置づけ
- **論文AMIR14**: 箱理論とMIR設計哲学→実装
- **論文BNyash**: 言語設計と実行モデル
- **論文D本稿**: SSA構築の実践的アルゴリズム ← ここ
- **論文ELoopForm**: 制御フロー正規化の革新
## 主要貢献
1. **PHI配置の実践的課題**
- 複雑な制御フローでのdominance違反
- Boxi64 handleとptr型の混在問題
- 未定義値とゼロ合成の設計判断
2. **BuilderCursor設計**
- 終端後挿入の構造的防止
- with_blockによる位置管理の分離
- closed状態の明示的追跡
3. **Sealed SSAの段階的導入**
- block_end_valuesによるスナップショット
- pred/succ関係の正規化
- 段階的なPHI配線戦略
## 実装からの教訓
### 1. 実際に遭遇した問題
- `dep_tree_min_string.nyash`での複雑なループ構造
- 文字列処理での頻繁な型変換handle↔ptr
- esc_json関数での深いネスト制御フロー
### 2. 解決アプローチ
- 環境変数によるデバッグ制御NYASH_LLVM_TRACE_PHI
- 段階的なsealed SSA導入NYASH_LLVM_PHI_SEALED
- ゼロ値合成による安全なフォールバック
### 3. 未解決課題
- 完全なdominance保証の実現
- 最適なPHI最小化アルゴリズム
- LoopFormとの統合戦略
## 章構成(案)
1. **Introduction**: Box言語でのSSA構築の特殊性
2. **Background**: SSA形式とLLVM IRの基礎
3. **Current Struggles**: 650行の実装での苦闘
- PHI配線の複雑さ
- 型混在とdominance違反
- デバッグの困難さ
4. **Box Theory**: 革命的な解決策
- 基本概念:基本ブロック=箱
- PHIの簡略化
- 100行での実装
5. **Implementation**: 箱理論の実装詳細
- コード比較Before/After
- 具体例での適用
6. **Integration with LoopForm**: 制御フローとの統合
7. **Evaluation**: 実プログラムでの評価
- コード量削減85%
- デバッグ時間短縮90%
8. **Related Work**: 他言語のSSA構築との比較
9. **Conclusion**: シンプルさの勝利
## 実験データ
- 対象プログラム: `dep_tree_min_string.nyash`
- メトリクス: PHI数、ゼロ合成回数、verifyエラー率
- 比較: sealed ON/OFF、LoopForm有無
## 関連ファイル
- 苦闘の記録: `current-struggles.md`
- 箱理論解決策: `box-theory-solution.md`
- 技術詳細: `technical-details.md`
- 実装(旧): `src/backend/llvm_legacy/compiler/codegen/`
- 実装(新): `src/llvm_py/`Python版、箱理論適用
- テスト: `apps/selfhost/tools/dep_tree_min_string.nyash`
- ログ: PHI配線トレース、dominance違反箇所
## 主要な成果
- **コード削減**: 650行 → 100行85%削減)
- **デバッグ時間**: 50分 → 5分90%短縮)
- **エラー率**: 頻繁 → ほぼゼロ
- **理解容易性**: 1日で習得可能
---
*Note: この論文は現在進行中のLLVM実装の苦闘と、その革命的な解決から生まれた実践的研究である。*