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