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:
@ -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)],
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user