LLVM opt命令详解(LLVM优化器)

概要

opt [options] [filename]

描述

opt命令是LLVM模块化的优化器和分析器。它将LLVM源文件作为输入,对其运行指定的优化或分析,然后输出优化文件或分析结果。opt的功能取决于是否给出了-analyze选项。

当-analyze被指定时,opt执行输入源的各种分析。它通常会在标准输出上打印结果,但在少数情况下,它会将输出打印到标准错误或生成带分析输出的文件,这通常在输出用于另一个程序时完成。

虽然-analyze给出的,opt将尝试产生优化后的输出文件。可通过opt获得的优化取决于链接到哪些库以及已加载-load选项的任何其他库。使用-help选项可确定可以使用的优化。

如果filename从命令行中省略或是” -“,则opt 从标准输入读取其输入。输入可以是LLVM汇编语言格式(.ll)或LLVM bitcode格式(.bc)。

如果未使用该-o选项指定输出文件名,则 opt会将其输出写入标准输出。

选项

  • -f

    在终端上启用二进制输出。通常,如果输出流是终端,opt将拒绝写入原始bitcode输出。使用此选项, opt将写入原始bitcode,而不管输出设备如何。

  • -help

    打印命令行选项的摘要。

  • -o filename

    指定输出文件名。

  • -S

    输出LLVM IR而不是LLVM字节码

  • -{passname}

    opt提供了以任何顺序运行任何LLVM优化或分析Pass的能力。选项列出了所有可用的Passes。选项在命令行中出现的顺序是它们的执行顺序(在传递约束内)。

  • -disable-inlining

    此选项只是从标准列表中删除内联传递。

  • -disable-opt

    只有在给出-std-link-opts时,此选项才有意义。它会禁用大多数Pass。

  • -strip-debug

    此选项导致opt在应用其他优化之前从模块中剥离调试信息。它与-strip基本相同, 但它确保首先完成调试信息的剥离。

  • -verify-each

    此选项导致opt在命令行上另外指定的每次传递后添加验证传递(包括-verify)。这对于怀疑传递正在创建无效模块但不清楚哪个传递正在执行它的情况很有用。

  • -stats

    打印统计信息

  • -time-passes

    记录每个Pass所需的时间并将其打印到标准错误。

  • -debug

    如果这是一个调试版本,则此选项将启用使用该LLVM_DEBUG()宏的传递的调试打印输出。有关详细信息,请参阅LLVM程序员手册部分#DEBUG

  • -load=<plugin>

    加载动态对象plugin。此对象应注册新的优化或分析过程。加载后,该对象将添加新的命令行选项以启用各种优化或分析。要查看新的完整优化列表,请同时使用-help-load选项。例如:

    opt -load=plugin.so -help
  • -p

    每次转换后打印模块。

退出状态

如果opt成功,它将以0退出。否则,如果发生错误,它将以非零值退出。