From a862e381ec718a5fb5aed36cdaa061105bb212c1 Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Mon, 12 Oct 2026 15:20:48 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B1=A0=E6=BB=A1=E6=97=B6=E6=B8=85=20k?= =?UTF-8?q?nown=20=E9=98=B2=E9=99=88=E6=97=A7=E5=80=BC=E8=AF=AF=E6=8A=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 42 +++++++++++++++--------------- Cargo.toml | 2 +- crates/oxide_fold/src/propagate.rs | 4 ++- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ad11ee67..96f7cd01 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1160,7 +1160,7 @@ dependencies = [ [[package]] name = "oxide_builtins" -version = "0.16.22" +version = "0.16.23" dependencies = [ "chrono", "fast-float", @@ -1185,7 +1185,7 @@ dependencies = [ [[package]] name = "oxide_bytecode" -version = "0.16.22" +version = "0.16.23" dependencies = [ "num-bigint", "oxide_log", @@ -1193,7 +1193,7 @@ dependencies = [ [[package]] name = "oxide_cfg" -version = "0.16.22" +version = "0.16.23" dependencies = [ "oxide_bytecode", "oxide_emit", @@ -1204,7 +1204,7 @@ dependencies = [ [[package]] name = "oxide_cli" -version = "0.16.22" +version = "0.16.23" dependencies = [ "ansi_term", "bumpalo", @@ -1228,7 +1228,7 @@ dependencies = [ [[package]] name = "oxide_code_cache" -version = "0.16.22" +version = "0.16.23" dependencies = [ "lru", "oxide_bytecode", @@ -1237,7 +1237,7 @@ dependencies = [ [[package]] name = "oxide_compiler" -version = "0.16.22" +version = "0.16.23" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1258,7 +1258,7 @@ dependencies = [ [[package]] name = "oxide_dce" -version = "0.16.22" +version = "0.16.23" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1272,7 +1272,7 @@ dependencies = [ [[package]] name = "oxide_emit" -version = "0.16.22" +version = "0.16.23" dependencies = [ "num-bigint", "oxc_allocator", @@ -1288,7 +1288,7 @@ dependencies = [ [[package]] name = "oxide_engine" -version = "0.16.22" +version = "0.16.23" dependencies = [ "oxide_bytecode", "oxide_compiler", @@ -1300,7 +1300,7 @@ dependencies = [ [[package]] name = "oxide_fold" -version = "0.16.22" +version = "0.16.23" dependencies = [ "num-bigint", "oxide_bytecode", @@ -1312,7 +1312,7 @@ dependencies = [ [[package]] name = "oxide_ir" -version = "0.16.22" +version = "0.16.23" dependencies = [ "oxide_bytecode", "oxide_log", @@ -1321,7 +1321,7 @@ dependencies = [ [[package]] name = "oxide_kernel" -version = "0.16.22" +version = "0.16.23" dependencies = [ "bumpalo", "dashmap", @@ -1335,7 +1335,7 @@ dependencies = [ [[package]] name = "oxide_liveness" -version = "0.16.22" +version = "0.16.23" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1347,7 +1347,7 @@ dependencies = [ [[package]] name = "oxide_log" -version = "0.16.22" +version = "0.16.23" dependencies = [ "tracing", "tracing-appender", @@ -1356,11 +1356,11 @@ dependencies = [ [[package]] name = "oxide_net" -version = "0.16.22" +version = "0.16.23" [[package]] name = "oxide_parser" -version = "0.16.22" +version = "0.16.23" dependencies = [ "oxc_allocator", "oxc_ast", @@ -1375,7 +1375,7 @@ dependencies = [ [[package]] name = "oxide_regalloc" -version = "0.16.22" +version = "0.16.23" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1391,7 +1391,7 @@ dependencies = [ [[package]] name = "oxide_runtime_api" -version = "0.16.22" +version = "0.16.23" dependencies = [ "num-bigint", "num-traits", @@ -1404,7 +1404,7 @@ dependencies = [ [[package]] name = "oxide_test262" -version = "0.16.22" +version = "0.16.23" dependencies = [ "oxide_bytecode", "oxide_compiler", @@ -1424,7 +1424,7 @@ dependencies = [ [[package]] name = "oxide_types" -version = "0.16.22" +version = "0.16.23" dependencies = [ "bumpalo", "dashmap", @@ -1437,7 +1437,7 @@ dependencies = [ [[package]] name = "oxide_vm" -version = "0.16.22" +version = "0.16.23" dependencies = [ "bumpalo", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 28347425..f569e5a8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,7 +25,7 @@ members = [ ] [workspace.package] -version = "0.16.22" +version = "0.16.23" edition = "2021" license = "MIT" rust-version = "1.80" diff --git a/crates/oxide_fold/src/propagate.rs b/crates/oxide_fold/src/propagate.rs index c7530b74..b74c82e0 100644 --- a/crates/oxide_fold/src/propagate.rs +++ b/crates/oxide_fold/src/propagate.rs @@ -143,13 +143,15 @@ pub fn fold_function(f: &mut IRFunction) -> bool { }; if let Some(value) = folded { - // 新常量入池(去重加溢出守卫);池满时 A 组失效,跳过改写。 + // 新常量入池(去重加溢出守卫);池满时 A 组失效,跳过改写并清 known。 if let Some(idx) = intern(constants, &value) { *inst = Inst::load_const(inst.rd, idx); changed = true; if let Some(rd) = inst.def_reg() { known[rd as usize] = Some(value); } + } else if let Some(rd) = inst.def_reg() { + known[rd as usize] = None; } } else { // B 组:逻辑短路(左操作数已知)→ 改写为 MOV。