Compiler construction 是否有包含LLVM优化列表的网页?
我见过很多优化的首字母缩略词,例如Compiler construction 是否有包含LLVM优化列表的网页?,compiler-construction,llvm,compiler-optimization,Compiler Construction,Llvm,Compiler Optimization,我见过很多优化的首字母缩略词,例如 dce、内联、constmerge、constprop、dse、licm、gvn、instcombine、mem2reg、scalarrepl 虽然我可以推断,dce是死代码消除,但我在许多其他方面遇到了麻烦 是否有一个包含LLVM优化列表和描述的网页,每个优化都具体做什么 亲切问候,, RoayLLVM文档包含一个列表。您列出的都属于转换过程。要详细说明有时简洁的文档,请执行以下操作: inlineinline函数(duh!) constmerge消除相同
dce、内联、constmerge、constprop、dse、licm、gvn、instcombine、mem2reg、scalarrepl
虽然我可以推断,dce
是死代码消除,但我在许多其他方面遇到了麻烦
是否有一个包含LLVM优化列表和描述的网页,每个优化都具体做什么
亲切问候,,
RoayLLVM文档包含一个列表。您列出的都属于转换过程。要详细说明有时简洁的文档,请执行以下操作:
inline函数(duh!)inline
消除相同常量的重复constmerge
执行简单的常量折叠(仅具有常量参数的指令)constprop
消除了明显无意义的内存写入(相当于dse
->a=1;a=2;
)a=2;
,循环不变代码运动,将每次迭代中相同的计算移出循环,以便它们只执行一次licm
- GVN是通用的缩写
将多条指令替换为一条等效指令(例如,等效于instcombine
->a+1+1
)a+2
将堆栈分配转换为SSA寄存器。如果前端只通过mem2reg
为局部变量分配空间,并将其用作指针,则会简单得多,但优化过程会在SSA上进行,因此此过程会将尽可能多的alloca
转换为SSAalloca
将聚合类型替换为单个成员(例如,使用两个i32寄存器,而不是将一个struct对象与两个i32成员混合)scalarrepl