feat(dce): 实现 Pass A 可达性 + Pass B use 计数迭代删除

- Pass A 消费 build_cfg,entry 沿 succs DFS(含 Exception 边保守,Pitfall 4)展开指令粒度 keep
- Pass B 可达存活指令聚合 use 计数,def 无 use 且 is_pure 迭代删至不动点(D-02 连锁)
- Pass C 最小 mark-sweep 重建 insts + label_pos 重映射(死 label 置 None)
- 依赖 oxide_bytecode(测试需 OpCode 常量,Rust 无 crate 传递可见性,与 oxide_cfg 骨架一致)
- 单测 8 条:死链/负例/STORE_VAR 特判/if-else/死块/Exception 保守/死闭包/连锁
This commit is contained in:
爱特每羊队
2026-08-06 11:33:27 +08:00
parent c2a64a2df8
commit 1a8e7ca9f5
3 changed files with 269 additions and 3 deletions
Generated
+12
View File
@@ -1130,6 +1130,18 @@ dependencies = [
"serde_json",
]
[[package]]
name = "oxide_dce"
version = "0.1.0"
dependencies = [
"oxide_bytecode",
"oxide_cfg",
"oxide_emit",
"oxide_ir",
"oxide_parser",
"oxide_vm",
]
[[package]]
name = "oxide_emit"
version = "0.1.0"