Files
mysysy/Pass_ID_List.md
2025-07-29 15:47:51 +08:00

1.3 KiB
Raw Blame History

记录中端遍的开发进度

名称 优化级别 开发进度
CFG优化 函数级 已完成
DCE 函数级 待正确性测试
Mem2Reg 函数级 待正确性测试
Reg2Mem 函数级 待正确性测试

部分优化遍的说明

Mem2Reg

Mem2Reg 遍的主要目标是将那些不必要的、只用于局部标量变量的内存分配 (alloca 指令) 消除,并将这些变量的值转换为 SSA 形式。这有助于减少内存访问,提高代码效率,并为后续的优化创造更好的条件。

Reg2Mem

我们的Reg2Mem 遍的主要目标是作为 Mem2Reg 的一种逆操作,但更具体是解决后端无法识别 PhiInst 指令的问题。主要的速录是将函数参数和 PhiInst 指令的结果从 SSA 形式转换回内存形式,通过插入 alloca、load 和 store 指令来实现。其他非 Phi 的指令结果将保持 SSA 形式。

后续优化可能涉及的改动

1将所有的alloca集中到entryblock中

好处优化友好性方便mem2reg提升 目前没有实现这个机制,如果想要实现首先解决同一函数不同域的同名变量命名区分 需要保证符号表能正确维护域中的局部变量