【问题标题】:Is there a web-page containing a list of LLVM optimizations?是否有包含 LLVM 优化列表的网页?
【发布时间】:2013-05-02 15:56:18
【问题描述】:

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

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

虽然我可以推断 dce 是死代码消除,但我在其他许多方面都遇到了麻烦。

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

亲切的问候, 罗伊

【问题讨论】:

    标签: compiler-construction llvm compiler-optimization


    【解决方案1】:

    LLVM 文档包含analysis and transformation passes 的列表。您列出的所有都属于转换通行证。详细说明有时很简洁的文档:

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

    【讨论】:

    • 这正是我想要的!我只是强调链接。
    猜你喜欢
    • 2014-02-22
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多