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

3.5 KiB
Raw Blame History

Phase 84: Case D 分析サマリー(エグゼクティブサマリー)

TL;DR

現状: 24件の Case D 失敗52失敗中

主要原因: Const命令の型アテーション欠如 (58-67%)

解決策: constant.rs の 5 関数に 5 行追加 → 14-16 件修正1-2時間で完了


問題の核心

現在の実装(バグ)

// 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 に何も登録していない!
}

修正版

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%


詳細分析

完全な分析レポートは以下を参照: