Add a link.
[oota-llvm.git] / docs / CommandGuide / llc.pod
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 bytecode 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 native code.
16
17 The choice of architecture for the output assembly code is determined as
18 follows, by attempting to satisfy each of the following rules in turn (first
19 one wins):
20
21 =over
22
23 =item *
24
25 If the user has specified an architecture with the -m option, use that
26 architecture.
27
28 =item *
29
30 Examine the input LLVM bytecode file: if it is little endian and has a
31 pointer size of 32 bits, select the Intel IA-32 architecture.  If it is big
32 endian and has a pointer size of 64 bits, select the SparcV9 architecture.
33
34 =item *
35
36 If B<llc> was compiled on an architecture for which it can generate code, select
37 the architecture upon which B<llc> was compiled.
38
39 =item *
40
41 Exit with an error message telling the user to specify the output
42 architecture explicitly.
43
44 =back
45
46 =head1 OPTIONS
47
48 If I<filename> is - or omitted, B<llc> reads LLVM bytecode from standard input.
49 Otherwise, it will read LLVM bytecode from I<filename>.
50
51 If the B<-o> option is omitted, then B<llc> will send its output to standard
52 output if the input is from standard input.  If the B<-o> option specifies -,
53 then the output will also be sent to standard output.
54
55 If no B<-o> option is specified and an input file other than - is specified,
56 then B<llc> creates the output filename by taking the input filename,
57 removing any existing F<.bc> extension, and adding a F<.s> suffix.
58
59 Other B<llc> options are as follows:
60
61 =over
62
63 =item B<-f>
64
65 Overwrite output files. By default, B<llc> will refuse to overwrite
66 an output file which already exists.
67
68 =item B<-march>=I<arch>
69
70 Specify the architecture for which to generate assembly.  Valid
71 architectures are:
72
73 =over
74
75 =item I<x86>
76
77 Intel IA-32 (Pentium and above)
78
79 =item I<ppc32>
80
81 32-bit PowerPC (MacOS X, 32-bit ABI)
82
83 =item I<sparcv9>
84
85 64-bit SPARC V9
86
87 =item I<c>
88
89 Emit C code, not assembly
90
91 =back
92
93 =item B<-enable-correct-eh-support>
94
95 Instruct the B<-lowerinvoke> pass to insert code for correct exception handling
96 support.  This is expensive and is by default omitted for efficiency.
97
98 =item B<-help>
99
100 Print a summary of command line options.
101
102 =item B<-stats>
103
104 Print statistics recorded by code-generation passes.
105
106 =item B<-time-passes>
107
108 Record the amount of time needed for each pass and print a report to standard
109 error.
110
111 =back
112
113 =head2 Intel IA-32-specific Options
114
115 =over
116
117 =item B<--disable-fp-elim>
118
119 Disable frame pointer elimination optimization.
120
121 =item B<--disable-pattern-isel>
122
123 Use the 'simple' X86 instruction selector (the default).
124
125 =item B<--print-machineinstrs>
126
127 Print generated machine code.
128
129 =item B<--regalloc>=I<allocator>
130
131 Specify the register allocator to use. The default I<allocator> is I<local>.
132 Valid register allocators are:
133
134 =over
135
136 =item I<simple>
137
138 Very simple "always spill" register allocator
139
140 =item I<local>
141
142 Local register allocator
143
144 =item I<linearscan>
145
146 Linear scan global register allocator
147
148 =item I<iterativescan>
149
150 Iterative scan global register allocator
151
152 =back
153
154 =item B<--spiller>=I<spiller>
155
156 Specify the spiller to use for register allocators that support it.  Currently
157 this option is used only by the linear scan register allocator. The default
158 I<spiller> is I<local>.  Valid spillers are:
159
160 =over
161
162 =item I<simple>
163
164 Simple spiller
165
166 =item I<local>
167
168 Local spiller
169
170 =back
171
172 =back
173
174 =head2 SPARCV9-specific Options
175
176 =over
177
178 =item B<--disable-peephole>
179
180 Disable peephole optimization pass.
181
182 =item B<--disable-sched>
183
184 Disable local scheduling pass.
185
186 =item B<--disable-strip>
187
188 The Sparc backend embeds the LLVM bytecode into the assembly output.  This
189 option requests that symbol names be retained; by default, they are stripped out.
190
191 =item B<--enable-maps>
192
193 Emit LLVM-to-machine code mapping information into the assembly output.
194
195 =back
196
197 =head1 EXIT STATUS
198
199 If B<llc> succeeds, it will exit with 0.  Otherwise, if an error occurs,
200 it will exit with a non-zero value.
201
202 =head1 SEE ALSO
203
204 L<lli|lli>
205
206 =head1 AUTHORS
207
208 Maintained by the LLVM Team (L<http://llvm.cs.uiuc.edu>).
209
210 =cut