docs(loops): LoopForm SSOT設計ノートを追加し、Bridge側ループ降下にPHI到達検証を導入(debug時)。\n\n- 新規: docs/development/architecture/loops/loopform_ssot.md\n- 修正: src/runner/json_v0_bridge/lowering/loop_.rs に debug_verify_phi_inputs 呼び出しを追加\n- 方針: Direct MIR は既に phi_core を使用。Bridge は段階的に LoopPhiOps アダプタでSSOTに寄せる

This commit is contained in:
nyash-codex
2025-11-01 16:37:16 +09:00
parent 01b4417c5d
commit eef6fca8cd
2 changed files with 53 additions and 0 deletions

View File

@ -54,6 +54,15 @@ pub(super) fn lower_loop_stmt(
inputs: vec![(cur_bb, copy_val)],
});
}
// 開発時検証SSOTと同等の不変条件チェック
#[cfg(debug_assertions)]
{
crate::mir::phi_core::common::debug_verify_phi_inputs(
f,
cond_bb,
&[(cur_bb, copy_val)],
);
}
phi_map.insert(name.clone(), dst);
}
}
@ -90,6 +99,17 @@ pub(super) fn lower_loop_stmt(
for (name, &phi_dst) in &phi_map {
if let Some(&latch_val) = body_vars.get(name) {
bb.update_phi_input(phi_dst, (bend, latch_val))?;
// 2要素目preheader copy + latchの到達検証
#[cfg(debug_assertions)]
{
if let Some(&pre_copy) = copy_map.get(name) {
crate::mir::phi_core::common::debug_verify_phi_inputs(
f,
cond_bb,
&[(cur_bb, pre_copy), (bend, latch_val)],
);
}
}
}
}
}