7edcc8ccf2436a61f5c2d39bd07333a40a10e72f
[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                 <di> x86
94                 <dd>IA-32 (Pentium and above)</dd>
95
96                 <di> sparc
97                 <dd>SPARC V9</dd>
98
99                 <di> c
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> -help
110         <br>
111         Print a summary of command line options.
112         <p>
113
114         <li> -stats
115         <br>
116         Print statistics.
117         <p>
118
119         <li> -time-passes
120         <br>
121         Record the amount of time needed for each pass and print it to standard
122         error.
123         <p>
124
125 </ul>
126 <h4>X86 Specific Options</h4>
127 <ul>
128         <li>-disable-fp-elim
129         <br>
130         Disable frame pointer elimination optimization.
131         <p>
132
133         <li>-disable-pattern-isel
134         <br>
135         Use the 'simple' X86 instruction selector (the default).
136         <p>
137
138         <li>-print-machineinstrs
139         <br>
140         Print generated machine code.
141         <p>
142
143         <li>-regalloc=&lt;ra&gt;
144         <br>
145         Specify the register allocator to use. The default is <i>simple</i>.
146         Valid register allocators are:
147         <dl compact>
148                 <di> simple
149                 <dd>Very simple register allocator</dd>
150
151                 <di> local
152                 <dd>Local register allocator</dd>
153
154                 <di> linearscan
155                 <dd>Linear scan global register allocator (experimental)</dd>
156         <p>
157
158         <li>-spiller=&lt;sp&gt;
159         <br>
160         Specify the spiller to use for register allocators that support it.
161         Currently this option is used by the linear scan register
162         allocator. The default is <i>local</i>.
163         Valid spillers are:
164         <dl compact>
165                 <di> local
166                 <dd>Local spiller</dd>
167         </dl>
168         <p>
169
170 </ul>
171
172 <h4>Sparc Specific Options</h4>
173 <ul>
174         <li>-disable-peephole
175         <br>
176         Disable peephole optimization pass.
177         <p>
178
179         <li>-disable-sched
180         <br>
181         Disable local scheduling pass.
182         <p>
183
184         <li>-disable-strip
185         <br>
186         Do not strip the LLVM bytecode included in executable.
187         <p>
188
189         <li>-enable-maps
190         <br>
191         Emit LLVM-to-MachineCode mapping info to assembly.
192         <p>
193 </ul>
194
195
196 <h3>EXIT STATUS</h3>
197
198 If <tt>llc</tt> succeeds, it will exit with 0.  Otherwise, if an error occurs,
199 it will exit with a non-zero value.
200
201 <h3>
202 SEE ALSO
203 </h3>
204 <a href="lli.html"><tt>lli</tt></a>
205
206 <HR>
207 Maintained by the <a href="http://llvm.cs.uiuc.edu">LLVM Team</a>.
208 </body>
209 </html>
210