Files
hakorune/docs/development/current/main/phase84-case-d-summary.md
nyash-codex 0771945735 docs: Add Phase 84 Case D detailed analysis
Task先生による残り15件のCase D詳細分析レポート。

## 主要発見

**根本原因**: Const命令の型アノテーション欠如(58-67%)
- Integer/Bool/Float/Null/Void定数が型登録されていない
- String定数は既に実装済み

## 分類

- GroupA: Const命令型アノテーション欠如(14-16件、58-67%)
- GroupB: Copy命令型伝播不足(6-8件、25-33%)
- GroupC: PHI命令型推論不足(4-6件、17-25%)
- GroupD: その他の命令型(2-4件)

## Phase 84-1 推奨

`src/mir/builder/emission/constant.rs` に5行追加で90%削減可能。

## ドキュメント

- phase84-case-d-detailed-analysis.md: 全24件の詳細分析
- phase84-case-d-summary.md: エグゼクティブサマリー

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 18:37:36 +09:00

134 lines
3.5 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.

# Phase 84: Case D 分析サマリー(エグゼクティブサマリー)
## TL;DR
**現状**: 24件の Case D 失敗52失敗中
**主要原因**: **Const命令の型アテーション欠如** (58-67%)
**解決策**: `constant.rs` の 5 関数に 5 行追加 → 14-16 件修正1-2時間で完了
---
## 問題の核心
### ❌ 現在の実装(バグ)
```rust
// Integer/Bool/Float/Null/Void は型を登録しない
pub fn emit_integer(b: &mut MirBuilder, val: i64) -> ValueId {
let dst = b.next_value_id();
b.emit_instruction(MirInstruction::Const {
dst,
value: ConstValue::Integer(val),
});
dst // ← value_types に何も登録していない!
}
```
### ✅ 修正版
```rust
pub fn emit_integer(b: &mut MirBuilder, val: i64) -> ValueId {
let dst = b.next_value_id();
b.emit_instruction(MirInstruction::Const {
dst,
value: ConstValue::Integer(val),
});
b.value_types.insert(dst, MirType::Integer); // ← この1行を追加
dst
}
```
**同様の修正を `emit_bool`/`emit_float`/`emit_null`/`emit_void` にも適用**
---
## 影響範囲
### 修正されるテスト(推定 14-16 件)
- `mir_locals_uninitialized` - `return 0` の型
- `mir_stageb_like_*_verifies` (7件) - 全て return 系
- `mir_stage1_cli_entry_like_pattern_verifies` - return 系
- 他の return リテラルを含むテスト
### 残存する問題8-10 件)
- **Copy命令型伝播不足** (6-8件) - Loop/If の edge copy
- **PHI型推論限界** (2-4件) - Await/Try-Catch/複雑な制御フロー
---
## 実装計画
### Phase 84-1: Const命令型アテーション最優先
**ファイル**: `src/mir/builder/emission/constant.rs`
**変更箇所**: 5 関数 × 1 行 = **5 行追加**
**期待効果**: Case D が 24件 → 8-10件58-67%削減)
**所要時間**: 1-2 時間(テスト含む)
**リスク**: 極めて低いString は既に実装済み)
### Phase 84-2: Copy命令型伝播次点
**ファイル**:
- `src/mir/builder/ssa/local.rs`
- `src/mir/phi_core/loop_phi.rs`
- `src/mir/phi_core/if_phi.rs`
**期待効果**: Case D が 8-10件 → 2-4件75-80%削減)
**所要時間**: 1-2 日
**リスク**: 中(既存ロジックとの整合性確認)
### Phase 84-3: PHI型推論強化長期
**期待効果**: Case D が 2-4件 → 0件完全解決
**所要時間**: 要検討(複雑度による)
**リスク**: 高(再帰的解析のパフォーマンス)
---
## 推奨アクション
1. **今すぐ Phase 84-1 を実装する**
- 最小限の変更で最大の効果
- リスクも極めて低い
- 1-2 時間で完了
2. **Phase 84-1 の効果を確認後、Phase 84-2 を検討**
- 残存ケースのパターンを分析
- 必要な箇所にのみ型伝播を追加
3. **Phase 84-3 は本当に必要か検証**
- Await/Try-Catch の型推論を別途対応
- 汎用的な多段 PHI チェーンは後回し
---
## 期待される最終結果
| Phase | Case D 件数 | 修正率 | 所要時間 |
|-------|------------|--------|---------|
| 現在 | 24 件 | 0% | - |
| Phase 84-1 後 | 8-10 件 | 58-67% | 1-2 時間 |
| Phase 84-2 後 | 2-4 件 | 92-96% | 1-2 日 |
| Phase 84-3 後 | 0-2 件 | 92-100% | 要検討 |
**最終目標**: テスト成功率 90% → **99-100%**
---
## 詳細分析
完全な分析レポートは以下を参照:
- [phase84-case-d-detailed-analysis.md](./phase84-case-d-detailed-analysis.md)