Fix link to llvmgcc.
[oota-llvm.git] / docs / CommandGuide / llc.html
1 <html>
2 <title>LLVM: llc tool</title>
3
4 <body bgcolor=white>
5
6 <center><h1>LLVM: <tt>llc</tt> tool</h1></center>
7 <HR>
8
9 <h3>NAME</h3>
10 <tt>llc</tt>
11
12 <h3>SYNOPSIS</h3>
13 <tt>llc [options] [filename]</tt>
14
15 <h3>DESCRIPTION</h3>
16
17 The <tt>llc</tt> command compiles LLVM bytecode into assembly language for a
18 specified architecture.  The assembly language output can then be passed through
19 a native assembler and linker to generate native code.
20 <p>
21 The choice of architecture for the output assembly code is determined as
22 follows:
23
24 <ul>
25         <li>
26         If the user has specified an architecture with the -m option, use that
27         architecture.
28         <p>
29
30         <li>
31         Examine the input LLVM bytecode file:
32         <ul>
33                 <li>
34                 If it specifies little endian and a pointer size of 32 bits, select the
35                 x86 architecture.
36                 <p>
37                 
38                 <li>
39                 If it specifies big endian and a pointer size of 64 bit pointers,
40                 select the SparcV9 architecture.
41         </ul>
42         <p>
43
44         <li>
45         If <tt>llc</tt> was compiled on an architecture for which it can
46         generate code, select the architecture upon which <tt>llc</tt> was
47         compiled.
48         <p>
49
50         <li>
51         Print a message to the user asking him or her to specify the output
52         architecture explicitly.
53 </ul>
54
55 <p>
56
57 If filename is not specified, or if filename is -, <tt>llc</tt> reads its input
58 from standard input.  Otherwise, it will read its input from filename.
59 <p>
60
61 If the -o option is left unspecified, then <tt>llc</tt> will send its output to standard
62 output if the input is from standard input.  If the -o option specifies -, then
63 the output will also be sent to standard output.
64 <p>
65
66 If no -o option is specified and an input file other than - is specified, then
67 <tt>llc</tt> creates the output filename as follows:
68
69 <ul>
70         <li>
71         If the file ends in .bc, then the .bc suffix is removed, and the .s suffix
72         is appended.
73         <p>
74         <li>
75         Otherwise, the .s suffix is appended to the input filename.
76 </ul>
77
78 <h3>
79 OPTIONS
80 </h3>
81 <ul>
82         <li>-f                   
83         <br>
84         Overwrite output files
85         <p>
86
87         <li>-m&lt;arch&gt;
88         <br>
89         Specify the architecture for which to generate assembly.  Valid
90         architectures are:
91
92         <dl compact>
93                 <dt> x86 </dt>
94                 <dd>IA-32 (Pentium and above)</dd>
95
96                 <dt> sparcv9 </dt>
97                 <dd>SPARC V9</dd>
98
99                 <dt> c </dt>
100                 <dd>Emit C code</dd>
101         </dl>
102         <p>
103
104         <li>-o &lt;filename&gt;
105         <br>
106         Specify the output filename.
107         <p>
108
109         <li>-enable-correct-eh-support
110         <br>
111         Instruct the -lowerinvoke pass to insert code for correct exception handling
112   support.  This is expensive and is by default omitted for efficiency.
113         <p>
114
115         <li> -help
116         <br>
117         Print a summary of command line options.
118         <p>
119
120         <li> -stats
121         <br>
122         Print statistics.
123         <p>
124
125         <li> -time-passes
126         <br>
127         Record the amount of time needed for each pass and print it to standard
128         error.
129         <p>
130
131 </ul>
132 <h4>X86 Specific Options</h4>
133 <ul>
134         <li>-disable-fp-elim
135         <br>
136         Disable frame pointer elimination optimization.
137         <p>
138
139         <li>-disable-pattern-isel
140         <br>
141         Use the 'simple' X86 instruction selector (the default).
142         <p>
143
144         <li>-print-machineinstrs
145         <br>
146         Print generated machine code.
147         <p>
148
149         <li>-regalloc=&lt;ra&gt;
150         <br>
151         Specify the register allocator to use. The default is <i>local</i>.
152         Valid register allocators are:
153         <p>
154         <dl compact>
155                 <dt> simple </dt>
156                 <dd>Very simple register allocator</dd>
157
158                 <dt> local </dt>
159                 <dd>Local register allocator</dd>
160
161                 <dt> linearscan </dt>
162                 <dd>Linear scan global register allocator (experimental)</dd>
163         </dl>
164
165         <li>-spiller=&lt;sp&gt;
166         <br>
167         Specify the spiller to use for register allocators that support it.
168         Currently this option is used by the linear scan register
169         allocator. The default is <i>local</i>.
170         Valid spillers are:
171         <p>
172         <dl compact>
173                 <dt> simple </dt>
174                 <dd>Simple spiller</dd>
175
176                 <dt> local </dt>
177                 <dd>Local spiller</dd>
178         </dl>
179
180 </ul>
181
182 <h4>Sparc Specific Options</h4>
183 <ul>
184         <li>-disable-peephole
185         <br>
186         Disable peephole optimization pass.
187         <p>
188
189         <li>-disable-sched
190         <br>
191         Disable local scheduling pass.
192         <p>
193
194         <li>-disable-strip
195         <br>
196         Do not strip the LLVM bytecode included in executable.
197         <p>
198
199         <li>-enable-maps
200         <br>
201         Emit LLVM-to-MachineCode mapping info to assembly.
202         <p>
203 </ul>
204
205
206 <h3>EXIT STATUS</h3>
207
208 If <tt>llc</tt> succeeds, it will exit with 0.  Otherwise, if an error occurs,
209 it will exit with a non-zero value.
210
211 <h3>
212 SEE ALSO
213 </h3>
214 <a href="lli.html"><tt>lli</tt></a>
215
216 <HR>
217 Maintained by the <a href="http://llvm.cs.uiuc.edu">LLVM Team</a>.
218 </body>
219 </html>
220