概要
llc [options] [filename]
描述
llc命令编译LLVM源文件到用于指定的体系结构的汇编语言。然后,汇编语言输出可以通过本机汇编器和链接器传递,以生成本机可执行文件。
除非使用-march
选项覆盖默认值,否则将自输入文件中自动确定输出汇编代码的体系结构选择。
如果filename
是-
或省略,则llc从标准输入读取。否则,它将来自filename
。输入可以是LLVM汇编语言格式(.ll
)或LLVM bitcode格式(.bc
)。
如果-o
省略该选项,则如果输入来自标准输入,则llc将其输出发送到标准输出。如果-o
选项指定” -
“,则输出也将发送到标准输出。
如果未-o
指定任何选项且指定了” -
“ 以外的输入文件,则llc通过获取输入文件名,删除任何现有.bc
扩展名并添加.s
后缀来创建输出文件名。
选项
-help
打印命令行选项的摘要。
-O=uint
生成不同优化级别的代码。这些对应于clang的
-O0
,-O1
,-O2
,和-O3
优化所使用的优化级别。-mtriple=traget triple
使用指定的字符串覆盖输入文件中指定的目标三元组。
-march=arch
指定要为其生成程序集的体系结构,覆盖输入文件中编码的目标。有关有效体系结构的列表,请参阅
llc -help
输出。默认情况下,这是从目标三元组推断或自动检测到当前架构。-mcpu=cpuname
在当前体系结构中指定特定芯片以生成代码。默认情况下,这是从目标三元组推断出来的,并自动检测到当前架构。有关可用CPU的列表,请使用:
llvm-as < /dev/null | llc -march=xyz -mcpu=help
-filetype=<output file type>
指定
llc
应生成哪种输出。选项包括:asm
用于文本汇编('.s'
),obj
用于本机对象文件('.o'
)和null
用于不发出任何内容(用于性能测试)。请注意,并非所有目标都支持所有选项。
-mattr=a1,+a2,-a3,…
覆盖或控制目标的特定属性,例如是否启用SIMD操作。默认属性集由当前CPU设置。有关可用属性的列表,请使用:
llvm-as < /dev/null | llc -march=xyz -mattr=help
–frame-pointer
指定帧指针消除优化的效果(全部,非叶子,无)
–disable-excess-fp-precision
禁用可能会为浮点生成过多精度的优化。请注意,此选项可以显着减慢某些系统(例如X86)上的代码。
–enable-no-infs-fp-math
启用不包含Inf值的优化。
–enable-no-nans-fp-math
启用不采用NAN值的优化。
–enable-unsafe-fp-math
启用对IEEE数学做出不安全假设的优化(例如,该添加是关联的),或者可能不适用于所有输入范围。这些优化允许代码生成器使用一些原本不可用的指令(例如
fsin
在X86上)。–stats
打印由代码生成通行证记录的统计信息。
–time-passes
记录每次传递所需的时间并将报告输出到标准错误。
–load=dso_path
动态加载
dso_path
(实现动态共享对象的路径),实现LLVM目标。这将允许目标名称与-march
选项一起使用,以便可以为该目标生成代码。-meabi=[default|gnu|4|5]
指定应遵循的EABI版本。有效的EABI版本是 gnu*, *4 和 5。默认值取决于三元组。
-stack-size-section
发出包含堆栈大小元数据的.stack_sizes部分。该部分包含一对函数符号值(指针大小)和堆栈大小(无符号LEB128)。堆栈大小值仅包括在函数序言中分配的空间。不包括具有动态堆栈分配的函数。
-remarks-section
发出.remarks(ELF)/__remarks(MachO)部分,其中包含有关备注诊断的元数据。
调整/配置选项
–print-machineinstrs
在编译阶段之间打印生成的机器代码(对调试很有用)。
–regalloc=allocator
指定要使用的寄存器分配器。有效的寄存器分配器是:
- basic:基本寄存器分配器。
- fast:快速寄存器分配器。它是未优化代码的默认值。
- greedy:贪婪的注册分配器。它是优化代码的默认值。
- pbqp:基于”分区布尔二次规划”的寄存器分配器。
–spiller=spiller
指定用于支持它的寄存器分配器的spiller。目前,此选项仅由线性扫描寄存器分配器使用。默认
spiller
为local。有效的spiller
是:- simple: 简单spiller
- local:本地spiller
Intel IA-32选项
–x86-asm-syntax=[att|intel]
指定是否以AT&T语法(默认)或Intel语法发出汇编代码。
退出状态
如果llc成功,它将以0退出。否则,如果发生错误,它将以非零值退出。