feat(phi): Phase 41-1 delete dead PHI code (147 lines)
Delete pure dead code identified by Task agent investigation: **if_phi.rs (-99 lines)** - merge_modified_at_merge_with (70 lines) - zero external callsites Superseded by PhiBuilderBox::generate_if_phis() - merge_with_reset_at_merge_with (29 lines) - wrapper for above **conservative.rs (-48 lines)** - get_conservative_values (48 lines) - zero callsites Superseded by PhiBuilderBox::get_conservative_if_values() Tests: Phase 40 5/5 PASS, conservative 3/3 PASS No regression (14 pre-existing failures unchanged) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -84,55 +84,8 @@ impl ConservativeMerge {
|
||||
}
|
||||
}
|
||||
|
||||
/// Conservative フォールバック値取得
|
||||
///
|
||||
/// # Returns
|
||||
/// * `Some((then_v, else_v))` - 両ブランチの値(void emission 含む)
|
||||
/// * `None` - どこにも定義されていない変数(スキップ)
|
||||
///
|
||||
/// # Conservative Rules
|
||||
/// 1. Both defined: use both values
|
||||
/// 2. Only then: use then + void
|
||||
/// 3. Only else: use void + else
|
||||
/// 4. Neither: skip (return None)
|
||||
pub fn get_conservative_values<F>(
|
||||
&self,
|
||||
name: &str,
|
||||
pre_if: &BTreeMap<String, ValueId>, // Phase 25.1: BTreeMap化
|
||||
then_end: &BTreeMap<String, ValueId>, // Phase 25.1: BTreeMap化
|
||||
else_end_opt: &Option<BTreeMap<String, ValueId>>, // Phase 25.1: BTreeMap化
|
||||
emit_void: F,
|
||||
) -> Option<(ValueId, ValueId)>
|
||||
where
|
||||
F: Fn() -> ValueId,
|
||||
{
|
||||
let pre_val_opt = pre_if.get(name).copied();
|
||||
|
||||
// Fallback to predecessor value if not defined in a branch
|
||||
let then_v_opt = then_end.get(name).copied().or(pre_val_opt);
|
||||
let else_v_opt = else_end_opt
|
||||
.as_ref()
|
||||
.and_then(|m| m.get(name).copied())
|
||||
.or(pre_val_opt);
|
||||
|
||||
match (then_v_opt, else_v_opt) {
|
||||
(Some(tv), Some(ev)) => Some((tv, ev)),
|
||||
(Some(tv), None) => {
|
||||
// Variable exists in then branch but not else or predecessor
|
||||
// Emit a 'const void' instruction to represent undefined value
|
||||
Some((tv, emit_void()))
|
||||
}
|
||||
(None, Some(ev)) => {
|
||||
// Variable exists in else branch but not then or predecessor
|
||||
// Emit a 'const void' instruction to represent undefined value
|
||||
Some((emit_void(), ev))
|
||||
}
|
||||
(None, None) => {
|
||||
// Variable doesn't exist anywhere - skip
|
||||
None
|
||||
}
|
||||
}
|
||||
}
|
||||
// Phase 41-1削除済み(2025-11-29)
|
||||
// - get_conservative_values (48行) - PhiBuilderBox::get_conservative_if_values()に置き換え済み
|
||||
|
||||
/// Debug trace 出力(Conservative PHI生成の可視化)
|
||||
pub fn trace_if_enabled(
|
||||
|
||||
Reference in New Issue
Block a user