mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-24 02:31:13 +08:00
fix: 池满时清 known 防陈旧值误折
This commit is contained in:
@@ -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。
|
||||
|
||||
Reference in New Issue
Block a user