Files
hakorune/docs/development/current/main/phases/phase-273/P3-CLAUDE.md
tomoaki 1b7fd7a0ff refactor(plan): Phase 273 P3+ - Legacy code removal
Phase 273 P3+ 完成: レガシーコード削除 + 未使用 import 整理

Removed Legacy Items:
1. emit_scan_with_init_edgecfg() - Pattern6 固有の emission 関数
   - File deleted: src/mir/builder/emission/loop_scan_with_init.rs (~144 lines)
   - Replaced by: generalized Frag API (Phase 273 P2)

2. CoreCarrierInfo struct - Legacy carrier representation
   - Removed from: src/mir/builder/control_flow/plan/mod.rs (~15 lines)
   - Replaced by: CorePhiInfo (generalized PHI representation)

3. verify_carrier() function - CoreCarrierInfo validator
   - Removed from: src/mir/builder/control_flow/plan/verifier.rs (~15 lines)
   - Replaced by: generalized PHI verification (V7-V9)

Code Cleanup:
- cargo fix applied: unused imports removed (~30 files)
- Verifier invariants updated: V1→V2-V9 (carrier→PHI model)
- Module declaration cleanup in emission/mod.rs

Impact:
- Total lines removed: ~174 lines (net reduction)
- Pattern-agnostic architecture strengthened
- All legacy Pattern6 references eliminated

Tests:
-  VM tests PASS (phase254/256/258)
-  LLVM tests PASS (phase256/258)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 00:11:20 +09:00

3.8 KiB
Raw Blame History

Phase 273 P3 — “Plan Lowering SSOT Finalize” (Claude Code Instructions)

目的:

  • Phase 273 P2 で導入した generalized CoreLoopPlan を SSOT として固定し、legacy fallback を撤去して収束を完成させる。

前提:

  • Extractor は purebuilder 触り禁止)
  • Pattern知識は Normalizer に閉じる
  • Lowerer は CorePlan のみを処理pattern-agnostic
  • terminator SSOT は Frag → emit_frag() のみ

Scope

P3 でやる:

  1. Pattern6 を generalized CoreLoopPlanfrag/block_effects/phis/final_values)へ移行
  2. lower_loop_legacy() を撤去し、generalized 経路を SSOT 化Fail-Fast
  3. CoreLoopPlan の Option<...> を必須化して “揺れ” を構造で消す(可能なら)

P3 でやらない:

  • Pattern8/その他 pattern の Plan 化(別フェーズ)
  • CorePlan の vocabulary 増殖variant追加禁止

Tasks

Task 1: Pattern6 を generalized CoreLoopPlan へ移行

対象:

  • src/mir/builder/control_flow/plan/normalizer.rs

やること:

  • ScanWithInit の normalize で以下を構築する:
    • block_effects: header/body/step の効果ValueId は normalizer で生成・型登録)
    • phis: header の loop-carrier PHI
    • frag: header/body の BranchStub + wiresstep→header, found→Return(i), after→Return(-1) など現行仕様に合わせる)
    • final_values: i の最終値after で使うならその ValueId
  • legacy fieldheader_effects/body/step_effects/carriers/cond_* など)を空/未使用にするか、最終的に削除する。

注意:

  • ScanWithInit は “return” を含むので、Frag wires に Return を含めるemit_frag SSOT
  • ensure_block_exists が必要なブロックafter/found 等)は Lowerer で担保する。

Task 2: Lowerer の legacy fallback を撤去

対象:

  • src/mir/builder/control_flow/plan/lowerer.rs

やること:

  • lower_loop_legacy() を削除
  • lower_loop() は generalized フィールドを必須として扱い、欠落時は ErrFail-Fast
    • 例: block_effects/phis/frag/final_values が None なら [lowerer] missing generalized loop fields で Err

狙い:

  • Lowerer から emit_scan_with_init_edgecfg() 等の pattern 参照を完全に消す。

Task 3: CoreLoopPlan の “必須化”(可能な範囲で)

対象:

  • src/mir/builder/control_flow/plan/mod.rs

やること:

  • block_effects/phis/frag/final_valuesOption から非Optionへ変更できるなら
  • legacy fields を削除(この時点で Pattern6/7 が generalized を使っていることが前提)

Task 4: Verifier の拡張generalized 専用の不変条件)

対象:

  • src/mir/builder/control_flow/plan/verifier.rs

例:

  • phis が空でないことcarrierがある場合
  • frag.entry が header_bb に一致することloopのentry SSOT
  • block_effects に header/body/step が含まれること(最低限)

Task 5: 回帰テスト

VM:

  • bash tools/smokes/v2/profiles/integration/apps/phase254_p0_index_of_vm.sh
  • bash tools/smokes/v2/profiles/integration/apps/phase256_p0_split_vm.sh
  • bash tools/smokes/v2/profiles/integration/apps/phase258_p0_index_of_string_vm.sh

LLVM必ず harness で、mock禁止:

  • cargo build --release --features llvm
  • bash tools/smokes/v2/profiles/integration/apps/phase256_p0_split_llvm_exe.sh
  • bash tools/smokes/v2/profiles/integration/apps/phase258_p0_index_of_string_llvm_exe.sh

注意:

  • NYASH_LLVM_USE_HARNESS=1--features llvm が無い場合は fail-fast するmock禁止

Acceptance Criteria

  • Lowerer から emit_scan_with_init_edgecfg() 等の pattern 固有参照が消えている
  • Pattern6/7 が generalized CoreLoopPlan を使用している
  • legacy fallback が撤去され、欠落時は ErrFail-Fast
  • 上記 smokes がすべて PASSVM/LLVM