fix(mir): PHI検証panic修正 - update_cfg()を検証前に呼び出し
A案実装: debug_verify_phi_inputs呼び出し前にCFG predecessorを更新
修正箇所(7箇所):
- src/mir/builder/phi.rs:50, 73, 132, 143
- src/mir/builder/ops.rs:273, 328, 351
根本原因:
- Branch/Jump命令でsuccessorは即座に更新
- predecessorはupdate_cfg()で遅延再構築
- PHI検証が先に実行されてpredecessor未更新でpanic
解決策:
- 各debug_verify_phi_inputs呼び出し前に
if let Some(func) = self.current_function.as_mut() {
func.update_cfg();
}
を挿入してCFGを同期
影響: if/else文、論理演算子(&&/||)のPHI生成が正常動作
This commit is contained in:
20
nyash.toml
20
nyash.toml
@ -34,11 +34,20 @@ path = "apps/lib/json_native/utils/string.nyash"
|
||||
# Resolve `using json as ...` to json_native when desired
|
||||
json = "json_native"
|
||||
StringUtils = "string_utils"
|
||||
StringHelpers = "sh_core"
|
||||
JsonNode = "json_node"
|
||||
|
||||
[using.json_node]
|
||||
path = "apps/lib/json_native/core/node.nyash"
|
||||
|
||||
# JSON stringify (Stage-B compiler dependency)
|
||||
[using.stringify]
|
||||
path = "lang/src/shared/json/stringify.hako"
|
||||
|
||||
# String helpers (Parser dependency)
|
||||
[using.sh_core]
|
||||
path = "lang/src/shared/common/string_helpers.hako"
|
||||
|
||||
[modules]
|
||||
# Map logical namespaces to Nyash source paths (consumed by runner)
|
||||
selfhost.compiler.debug = "apps/selfhost/compiler/boxes/debug_box.nyash"
|
||||
@ -61,6 +70,7 @@ selfhost.vm.mir_min = "apps/selfhost/vm/boxes/mir_vm_min.nyash"
|
||||
"lang.compiler.parser.scan.parser_ident_scan_box" = "lang/src/compiler/parser/scan/parser_ident_scan_box.hako"
|
||||
"lang.compiler.parser.scan.parser_number_scan_box" = "lang/src/compiler/parser/scan/parser_number_scan_box.hako"
|
||||
"lang.compiler.parser.scan.parser_string_scan_box" = "lang/src/compiler/parser/scan/parser_string_scan_box.hako"
|
||||
"lang.compiler.parser.scan.parser_common_utils_box" = "lang/src/compiler/parser/scan/parser_common_utils_box.hako"
|
||||
"lang.compiler.parser.using.using_collector_box" = "lang/src/compiler/parser/using/using_collector_box.hako"
|
||||
"lang.compiler.parser.expr.parser_expr_box" = "lang/src/compiler/parser/expr/parser_expr_box.hako"
|
||||
"lang.compiler.parser.expr.parser_peek_box" = "lang/src/compiler/parser/expr/parser_peek_box.hako"
|
||||
@ -78,6 +88,16 @@ selfhost.vm.mir_min = "apps/selfhost/vm/boxes/mir_vm_min.nyash"
|
||||
"lang.compiler.builder.ssa.cond_inserter" = "lang/src/compiler/builder/ssa/cond_inserter.hako"
|
||||
"lang.compiler.builder.rewrite.special" = "lang/src/compiler/builder/rewrite/special.hako"
|
||||
"lang.compiler.builder.rewrite.known" = "lang/src/compiler/builder/rewrite/known.hako"
|
||||
"lang.compiler.emit.common.json_emit_box" = "lang/src/compiler/emit/common/json_emit_box.hako"
|
||||
"lang.compiler.emit.common.mir_emit_box" = "lang/src/compiler/emit/common/mir_emit_box.hako"
|
||||
"lang.compiler.emit.common.call_emit_box" = "lang/src/compiler/emit/common/call_emit_box.hako"
|
||||
"lang.compiler.emit.common.newbox_emit_box" = "lang/src/compiler/emit/common/newbox_emit_box.hako"
|
||||
"lang.compiler.emit.common.header_emit_box" = "lang/src/compiler/emit/common/header_emit_box.hako"
|
||||
"lang.compiler.emit.common.json_emit" = "lang/src/compiler/emit/common/json_emit_box.hako"
|
||||
"lang.compiler.emit.common.mir_emit" = "lang/src/compiler/emit/common/mir_emit_box.hako"
|
||||
"lang.compiler.emit.common.call_emit" = "lang/src/compiler/emit/common/call_emit_box.hako"
|
||||
"lang.compiler.emit.common.newbox_emit" = "lang/src/compiler/emit/common/newbox_emit_box.hako"
|
||||
"lang.compiler.emit.common.header_emit" = "lang/src/compiler/emit/common/header_emit_box.hako"
|
||||
|
||||
# Shared helpers (selfhost shared/vm)
|
||||
"selfhost.shared.json_adapter" = "lang/src/shared/json_adapter.hako"
|
||||
|
||||
Reference in New Issue
Block a user