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

标签 compiler-construction llvm compiler-optimization

我见过很多优化缩略词,例如。
dce, inline, constmerge, constprop, dse, licm, gvn, instcombine, mem2reg, scalarrepl
虽然我可以推断出 dce是死代码消除,我有很多其他问题。

是否有一个包含 LLVM 优化列表和描述的网页,它们中的每一个究竟是做什么的?

亲切的问候,
罗伊

最佳答案

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

  • inline内联函数(废话!)。
  • 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 寄存器)。
  • 关于compiler-construction - 是否有包含 LLVM 优化列表的网页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16440347/

    相关文章:

    c++ - 自动编译 MS visual c++

    c# - 从左到右的表达式评估

    java - 在没有字节码 validator 的情况下访问私有(private)字段

    compiler-construction - LLVM 中用于 C++ 输入的 FunctionPass

    c++ - 为什么 Clang 优化这段代码?

    compiler-errors - 词法分析器将 5abc 识别为什么样的标记?还是错误?

    c++ - 用于 ModuleMaker LLVM 示例程序的 CMakeList

    c++ - 从不同的模块导入函数

    c# - C# 编译器的优化程度如何?

    C -- 通过带别名的非 const 指针修改 const