2013-05-08 62 views
4

我见过许多优化缩写词,例如。是否有包含LLVM优化列表的网页?

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

虽然我可以推断dce是死代码消除,我有很多其他的麻烦。

是否有一个带有描述的LLVM优化列表的网页,它们究竟是什么?

亲切的问候, Roay

回答

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 + 1a + 2)取代多个指令。
  • mem2reg将堆栈分配转换为SSA寄存器。如果前端只需通过alloca为当地人分配空间并将其用作指针,则前端就简单多了,但优化传递可用于SSA,因此此传递将尽可能多的allocas转换为SSA。
  • scalarrepl用各个成员替换聚合类型(例如,用两个i32成员来转换结构对象,使用两个i32寄存器)。
+0

这正是我一直在寻找的!我只强调这个链接。 – 2013-05-08 12:38:46