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优化列表和描述的网页,每个优化都具体做什么

亲切问候,,
Roay

LLVM文档包含一个列表。您列出的都属于转换过程。要详细说明有时简洁的文档,请执行以下操作:

  • inline
    inline函数(duh!)
  • constmerge
    消除相同常量的重复
  • constprop
    执行简单的常量折叠(仅具有常量参数的指令)
  • dse
    消除了明显无意义的内存写入(相当于
    a=1;a=2;
    ->
    a=2;
  • licm
    ,循环不变代码运动,将每次迭代中相同的计算移出循环,以便它们只执行一次
  • GVN是通用的缩写
  • instcombine
    将多条指令替换为一条等效指令(例如,等效于
    a+1+1
    ->
    a+2
  • mem2reg
    将堆栈分配转换为SSA寄存器。如果前端只通过
    alloca
    为局部变量分配空间,并将其用作指针,则会简单得多,但优化过程会在SSA上进行,因此此过程会将尽可能多的
    alloca
    转换为SSA
  • scalarrepl
    将聚合类型替换为单个成员(例如,使用两个i32寄存器,而不是将一个struct对象与两个i32成员混合)

这正是我想要的!我只想强调一下联系。