1llc - LLVM static compiler 2========================== 3 4 5SYNOPSIS 6-------- 7 8 9**llc** [*options*] [*filename*] 10 11 12DESCRIPTION 13----------- 14 15 16The **llc** command compiles LLVM source inputs into assembly language for a 17specified architecture. The assembly language output can then be passed through 18a native assembler and linker to generate a native executable. 19 20The choice of architecture for the output assembly code is automatically 21determined from the input file, unless the **-march** option is used to override 22the default. 23 24 25OPTIONS 26------- 27 28 29If *filename* is - or omitted, **llc** reads from standard input. Otherwise, it 30will from *filename*. Inputs can be in either the LLVM assembly language 31format (.ll) or the LLVM bitcode format (.bc). 32 33If the **-o** option is omitted, then **llc** will send its output to standard 34output if the input is from standard input. If the **-o** option specifies -, 35then the output will also be sent to standard output. 36 37If no **-o** option is specified and an input file other than - is specified, 38then **llc** creates the output filename by taking the input filename, 39removing any existing *.bc* extension, and adding a *.s* suffix. 40 41Other **llc** options are as follows: 42 43End-user Options 44~~~~~~~~~~~~~~~~ 45 46 47 48**-help** 49 50 Print a summary of command line options. 51 52 53 54**-O**\ =\ *uint* 55 56 Generate code at different optimization levels. These correspond to the *-O0*, 57 *-O1*, *-O2*, and *-O3* optimization levels used by **llvm-gcc** and 58 **clang**. 59 60 61 62**-mtriple**\ =\ *target triple* 63 64 Override the target triple specified in the input file with the specified 65 string. 66 67 68 69**-march**\ =\ *arch* 70 71 Specify the architecture for which to generate assembly, overriding the target 72 encoded in the input file. See the output of **llc -help** for a list of 73 valid architectures. By default this is inferred from the target triple or 74 autodetected to the current architecture. 75 76 77 78**-mcpu**\ =\ *cpuname* 79 80 Specify a specific chip in the current architecture to generate code for. 81 By default this is inferred from the target triple and autodetected to 82 the current architecture. For a list of available CPUs, use: 83 **llvm-as < /dev/null | llc -march=xyz -mcpu=help** 84 85 86 87**-mattr**\ =\ *a1,+a2,-a3,...* 88 89 Override or control specific attributes of the target, such as whether SIMD 90 operations are enabled or not. The default set of attributes is set by the 91 current CPU. For a list of available attributes, use: 92 **llvm-as < /dev/null | llc -march=xyz -mattr=help** 93 94 95 96**--disable-fp-elim** 97 98 Disable frame pointer elimination optimization. 99 100 101 102**--disable-excess-fp-precision** 103 104 Disable optimizations that may produce excess precision for floating point. 105 Note that this option can dramatically slow down code on some systems 106 (e.g. X86). 107 108 109 110**--enable-no-infs-fp-math** 111 112 Enable optimizations that assume no Inf values. 113 114 115 116**--enable-no-nans-fp-math** 117 118 Enable optimizations that assume no NAN values. 119 120 121 122**--enable-unsafe-fp-math** 123 124 Enable optimizations that make unsafe assumptions about IEEE math (e.g. that 125 addition is associative) or may not work for all input ranges. These 126 optimizations allow the code generator to make use of some instructions which 127 would otherwise not be usable (such as fsin on X86). 128 129 130 131**--enable-correct-eh-support** 132 133 Instruct the **lowerinvoke** pass to insert code for correct exception handling 134 support. This is expensive and is by default omitted for efficiency. 135 136 137 138**--stats** 139 140 Print statistics recorded by code-generation passes. 141 142 143 144**--time-passes** 145 146 Record the amount of time needed for each pass and print a report to standard 147 error. 148 149 150 151**--load**\ =\ *dso_path* 152 153 Dynamically load *dso_path* (a path to a dynamically shared object) that 154 implements an LLVM target. This will permit the target name to be used with the 155 **-march** option so that code can be generated for that target. 156 157 158 159 160Tuning/Configuration Options 161~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 162 163 164 165**--print-machineinstrs** 166 167 Print generated machine code between compilation phases (useful for debugging). 168 169 170 171**--regalloc**\ =\ *allocator* 172 173 Specify the register allocator to use. The default *allocator* is *local*. 174 Valid register allocators are: 175 176 177 *simple* 178 179 Very simple "always spill" register allocator 180 181 182 183 *local* 184 185 Local register allocator 186 187 188 189 *linearscan* 190 191 Linear scan global register allocator 192 193 194 195 *iterativescan* 196 197 Iterative scan global register allocator 198 199 200 201 202 203**--spiller**\ =\ *spiller* 204 205 Specify the spiller to use for register allocators that support it. Currently 206 this option is used only by the linear scan register allocator. The default 207 *spiller* is *local*. Valid spillers are: 208 209 210 *simple* 211 212 Simple spiller 213 214 215 216 *local* 217 218 Local spiller 219 220 221 222 223 224 225Intel IA-32-specific Options 226~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 227 228 229 230**--x86-asm-syntax=att|intel** 231 232 Specify whether to emit assembly code in AT&T syntax (the default) or intel 233 syntax. 234 235 236 237 238 239EXIT STATUS 240----------- 241 242 243If **llc** succeeds, it will exit with 0. Otherwise, if an error occurs, 244it will exit with a non-zero value. 245 246 247SEE ALSO 248-------- 249 250 251lli|lli 252