是否有包含LLVM优化列表的网页?

时间:2013-05-08 12:10:32

标签: compiler-construction llvm compiler-optimization

我见过很多优化缩略词,例如

dce, inline, constmerge, constprop, dse, licm, gvn, instcombine, mem2reg, scalarrepl

虽然我可以推断dce消除了死代码,但我遇到很多其他问题。

是否有一个带有描述的LLVM优化列表的网页,其中每个优化的具体内容是什么?

亲切的问候, Roay

1 个答案:

答案 0 :(得分:4)

LLVM文档包含analysis and transformation passes的列表。你列出的所有都属于转换过程。详细说明有时简洁的文档:

  • inline内联函数(duh!)。
  • constmerge重复相同的常量。
  • constprop进行简单的常量折叠(只有带有常量参数的指令)
  • dse消除了明显无意义的内存写入(相当于a = 1; a = 2; - > a = 2;)。
  • licm,循环不变代码运动,在循环的每次迭代中移动相同的计算,以便它们只执行一次。
  • GVN是global value numbering的常用首字母缩写。
  • instcombine使用单个等效指令替换多个指令(例如,等同于a + 1 + 1 - > a + 2)。
  • mem2reg将堆栈分配转换为SSA寄存器。如果只是通过alloca为本地人分配空间并将它们用作指针,那么前端会更简单,但是优化传递在SSA上工作,因此这个传递将尽可能多的alloca转换为SSA
  • scalarrepl用单个成员替换聚合类型(例如,不是使用两个i32成员来处理结构对象,而是使用两个i32寄存器)。