From 0e5b73f06693b50cccadfc2d39eabe1ee2aec982 Mon Sep 17 00:00:00 2001 From: nyash-codex Date: Sat, 29 Nov 2025 16:24:58 +0900 Subject: [PATCH] feat(joinir): Phase 61-7.0 Delete dead code facades (-39 lines) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 61-7.0: Dead code facade 関数削除 ## 削除内容 ### phi_core/mod.rs - ✅ build_if_phis() 削除(L53-64, 呼び出し元ゼロ) - ✅ build_exit_phis_for_control() 削除(L66-87, 直接 loopform_builder:: を使用) - ✅ 未使用 imports 削除(ControlForm, BasicBlockId, ValueId, BTreeMap) - ✅ 削除記録コメント追加 ## 削減効果 - **純削減**: -39 行 - **Dead code 根絶**: facade 層の完全削除 ## 技術的背景 - build_if_phis(): 呼び出し元ゼロ、PhiBuilderBox::generate_phis() で代替 - build_exit_phis_for_control(): loop_form.rs は loopform_builder:: を直接呼出 ## テスト結果 - ✅ ビルド成功(0 error, 0 warning) Phase 61-7 の最初のステップ完了! 次: Phase 61-7.1 JoinIR カバレッジ分析 --- CURRENT_TASK.md | 19 +++++++------- src/mir/phi_core/mod.rs | 55 ++++++----------------------------------- 2 files changed, 17 insertions(+), 57 deletions(-) diff --git a/CURRENT_TASK.md b/CURRENT_TASK.md index 9c30a28e..e44122e6 100644 --- a/CURRENT_TASK.md +++ b/CURRENT_TASK.md @@ -174,21 +174,20 @@ - `if_in_loop/` モジュール(9 ファイル、~480 行)を新設し、`stmt_handlers.rs` から 154 行削減(40% 削減達成)。 - 全 56 JoinIR tests PASS(回帰なし)、保守性・拡張性向上(新パターン追加が容易に)。 - docs: `docs/development/refactoring/p1-if-handler-boxification-plan.md` + +### 1-00g. Phase 61-6 — If PHI JoinIR 化 第2弾(薄いラッパー削減) + +- 目的: If 側 PHI ラインから JoinIR と二重管理になっていた薄いラッパー/観察専用ユーティリティを取り除き、PHI 仕様の SSOT を JoinIR 側に寄せる。 +- 実績: + - `set_if_context` 薄いラッパーを削除し、callsite から直接 `IfPhiContext` を構築するよう統一。IfPhiContext の入口が一本化され、文脈箱(IfPhiContext)と emitter 箱(IfInLoop/Toplevel)の責務分離がより明確になった。 + - PhiBuilderBox ベースの PhiSpec 観察用関数(`extract_phi_spec_from_builder`, `compare_and_log_phi_specs` など)を削除し、PHI 仕様計算を JoinIR 起点の `compute_phi_spec_from_joinir` に一本化。 + - 合計約 97 行削減(予想 76 行を超過)。If 側 PHI の「観察・比較」は JoinIR 情報から復元する経路のみとなり、if_phi/PhiBuilderBox は本番ロジックに専念する構造に整理された。 + - JoinIR/phi_core 関連テストは全て PASS。既知の `local` キーワード問題を除き、新たな退行はなし。 --- ## 2. 中期 TODO(ざっくり) - -- **Phase 61-6: If PHI JoinIR 化 第2弾(薄いラッパー削除)** 🎯 次のタスク - - 61-6.1: P1 薄いラッパー削除(26行削減見込み) - - `set_if_context` 削除: loop_builder/if_lowering.rs で直接 IfPhiContext 生成に置き換え(11行) - - If Lowering dev フラグ削除: `joinir_if_select_enabled()` チェック削除、デフォルト有効化(15行) - - 61-6.2: P2 A/B テスト観察関数削除(50行削減見込み) - - `extract_phi_spec_from_builder`, `compare_and_log_phi_specs` 削除 - - if_lowering.rs の A/B 比較ロジック削除 - - 期待削減: 合計 76行、JoinIR SSOT 確立 - - docs: `docs/development/current/main/phase61-5.4-next-phase-candidates.md` - **Phase 42: PHI Workaround 条件付きスキップ** ✅ 完了(2025-11-28) - ✅ 42-1: PHI workaround 内容の文書化完了(README.md に記録) - ✅ 42-2: `parser_control_box.hako:85-139` に条件付きスキップ実装 diff --git a/src/mir/phi_core/mod.rs b/src/mir/phi_core/mod.rs index 876ecb4b..feb5b110 100644 --- a/src/mir/phi_core/mod.rs +++ b/src/mir/phi_core/mod.rs @@ -38,50 +38,11 @@ pub mod phi_builder_box; // Phase 26-F-4: Loop Exit Liveness Box - exit後で使われる変数決定箱 pub mod loop_exit_liveness; -// Public surface for callers that want a stable path: -// Phase 26-F: 軽量ラッパだけ用意しておき、内部構造に触らずに -// 「どこから読めばよいか」の入口を固定する。 - -use crate::mir::control_form::ControlForm; -use crate::mir::{BasicBlockId, ValueId}; -use std::collections::BTreeMap; - -/// 統一 If PHI 入口(薄いラッパ) -/// -/// - 役割: PhiBuilderBox を内部で生成して If PHI を張るだけ。 -/// - 挙動: 既存の PhiBuilderBox::generate_phis と同一(Loop 形は未対応のまま)。 -pub fn build_if_phis( - ops: &mut O, - form: &ControlForm, - pre_snapshot: &BTreeMap, - post_snapshots: &[BTreeMap], -) -> Result<(), String> -where - O: crate::mir::phi_core::phi_builder_box::PhiBuilderOps, -{ - let mut box_ = crate::mir::phi_core::phi_builder_box::PhiBuilderBox::new(); - box_.generate_phis(ops, form, pre_snapshot, post_snapshots) -} - -/// 統一 Exit PHI 入口(ControlForm ラッパ) -/// -/// - 役割: LoopFormBuilder::build_exit_phis を ControlForm ベースで呼ぶ薄いラッパ。 -/// - 挙動: 既存の build_exit_phis_for_control と完全に同じで、単にパスを固定する。 -pub fn build_exit_phis_for_control( - loopform: &crate::mir::phi_core::loopform_builder::LoopFormBuilder, - ops: &mut O, - form: &ControlForm, - exit_snapshots: &[(BasicBlockId, BTreeMap)], - branch_source_block: BasicBlockId, -) -> Result<(), String> -where - O: crate::mir::phi_core::loopform_builder::LoopFormOps, -{ - crate::mir::phi_core::loopform_builder::build_exit_phis_for_control( - loopform, - ops, - form, - exit_snapshots, - branch_source_block, - ) -} +// Phase 61-7.0: Dead code 削除 +// 削除された facade 関数: +// - build_if_phis(): 呼び出し元ゼロ、PhiBuilderBox::generate_phis() で代替 +// - build_exit_phis_for_control(): 呼び出し元は loopform_builder:: を直接使用 +// +// 直接呼び出し推奨: +// - If PHI: PhiBuilderBox::generate_phis() (if_lowering.rs) +// - Exit PHI: loopform_builder::build_exit_phis_for_control() (loop_form.rs)