feat(joinir): Phase 61-3 devフラグ・if_phi_context拡張準備
Phase 61-3(If-in-loop JoinIR本番切り替え)の基盤準備: - env.rs: joinir_if_in_loop_enable() 追加 - HAKO_JOINIR_IF_IN_LOOP_ENABLE=1 で本番経路有効化 - デフォルトOFF(安全第一) - if_phi_context.rs: Phase 61-3拡張準備 - BTreeMap, ValueId, BasicBlockId import追加 - ドキュメント更新(incoming値解決メソッド予告) 設計書: docs/private/.../phase61-3-box-design.md(別途) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -277,6 +277,23 @@ pub fn joinir_if_in_loop_dryrun_enabled() -> bool {
|
||||
env_bool("HAKO_JOINIR_IF_IN_LOOP_DRYRUN")
|
||||
}
|
||||
|
||||
/// Phase 61-3: If-in-loop JoinIR本番経路有効化
|
||||
///
|
||||
/// `HAKO_JOINIR_IF_IN_LOOP_ENABLE=1` でJoinIR本番経路を有効化
|
||||
///
|
||||
/// 動作:
|
||||
/// - ON: JoinIR + IfInLoopPhiEmitter経路(PhiBuilderBox不使用)
|
||||
/// - OFF: PhiBuilderBox経路(既存フォールバック)
|
||||
///
|
||||
/// 前提条件:
|
||||
/// - NYASH_JOINIR_IF_SELECT=1(Phase 33基盤)
|
||||
/// - dry-runモードとは独立(HAKO_JOINIR_IF_IN_LOOP_DRYRUN)
|
||||
///
|
||||
/// デフォルト: OFF(安全第一)
|
||||
pub fn joinir_if_in_loop_enable() -> bool {
|
||||
env_bool("HAKO_JOINIR_IF_IN_LOOP_ENABLE")
|
||||
}
|
||||
|
||||
// VM legacy by-name call fallback was removed (Phase 2 complete).
|
||||
// Phase 40-4.1: use_joinir_for_array_filter() removed (Route B now default).
|
||||
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
//! 従来は PhiBuilderBox::set_if_context() で carrier_names を渡していたが、
|
||||
//! Phase 61-1 で JoinIR 経路に統一するため、この情報を渡す手段が必要。
|
||||
//!
|
||||
//! ## Phase 61-3 拡張
|
||||
//!
|
||||
//! incoming 値解決メソッドを追加し、CFG依存ロジックをIfPhiContextに集約。
|
||||
//!
|
||||
//! ## 設計
|
||||
//!
|
||||
//! ```
|
||||
@ -21,8 +25,10 @@
|
||||
//!
|
||||
//! - ループ内 if のコンテキスト情報を保持
|
||||
//! - carrier_names の判定ユーティリティ提供
|
||||
//! - Phase 61-3: incoming値解決(CFG依存ロジック)
|
||||
|
||||
use std::collections::BTreeSet;
|
||||
use crate::mir::{BasicBlockId, ValueId};
|
||||
use std::collections::{BTreeMap, BTreeSet};
|
||||
|
||||
/// If-in-loop 用 PHI コンテキスト
|
||||
#[derive(Debug, Clone)]
|
||||
|
||||
Reference in New Issue
Block a user