MachineCSE
MachineCSE 是 LLVM 后端用于在 SSA 机器指令级别进行 公共子表达式消除(CSE) 的优化 Pass,旨在通过识别重复的计算并替换为已有结果,从而减少指令数、降低寄存器/内存压力。
这个 Pass 的概念也非常简单,对应到中端,就是普通CSE。
该 Pass 将近 1000 行,可以使用 -aggressive-machine-cse 强制忽略收益判断,直接执行 CSE 操作。
该 Pass 依赖:
MachineDominatorTreeAnalysis
MachineBlockFrequencyAnalysis
主处理函数为:
bool MachineCSEImpl::run(MachineFunction &MF) {
TII = MF.getSubtarget().getInstrInfo();
TRI = MF.getSubtarget().getRegisterInfo();
MRI = &MF.getRegInfo();
LookAheadLimit = TII->get ...