blob: 26e680342cd67ffe4f35fe9b688ea7f3fe16c15e [file] [log] [blame]
John Criswell69d903d2003-09-12 15:46:24 +00001<html>
2<title>
Chris Lattneree43b692003-09-25 19:50:05 +00003LLVM: llc tool
John Criswell69d903d2003-09-12 15:46:24 +00004</title>
5
6<body>
7
8<center>
Chris Lattneree43b692003-09-25 19:50:05 +00009<h1>LLVM: llc tool</h1>
John Criswell69d903d2003-09-12 15:46:24 +000010</center>
11<HR>
12
13<h3>
14NAME
15</h3>
16
17llc
18
19<h3>
20SYNOPSIS
21</h3>
22
John Criswell511a4912003-09-29 20:10:08 +000023llc [options] [filename]
John Criswell69d903d2003-09-12 15:46:24 +000024<h3>
25DESCRIPTION
26</h3>
27
28The llc command compiles LLVM bytecode into assembly language for a specified
29architecture. The assembly language output can then be passed through a native
30assembler and linker to generate native code.
John Criswell511a4912003-09-29 20:10:08 +000031<p>
32The choice of architecture for the output assembly code is determined as
33follows:
34
35<ul>
36 <li>
37 If the user has specified an architecture with the -m option, use that
38 architecture.
39 <p>
40
41 <li>
42 Examine the input LLVM bytecode file:
43 <ul>
44 <li>
45 If it specifies little endian and a pointer size of 32 bits, select the
46 x86 architecture.
47 <p>
48
49 <li>
50 If it specifies big endian and a pointer size of 64 bit pointers,
51 select the SparcV9 architecture.
52 </ul>
53 <p>
54
55 <li>
56 If llc was compiled on an architecture for which it can generate code,
57 select the architecture upon which llc was compiled.
58 <p>
59
60 <li>
61 Print a message to the user asking him or her to specify the output
62 architecture explicitly.
63</ul>
64
65<p>
66
67If filename is not specified, or if filename is -, llc reads its input from
68standard input. Otherwise, it will read its input from filename.
69<p>
70
71If the -o option is left unspecified, then llc will send its output to standard
72output if the input is from standard input. If the -o option specifies -, then
73the output will also be sent to standard output.
74<p>
75
76If no -o option is specified and an input file other than - is specified, then
77llc creates the output filename as follows:
78
79<ul>
80 <li>
81 If the file ends in .bc, then the .bc suffix is removed, and the .s suffix
82 is appended.
83 <p>
84 <li>
85 Otherwise, the .s suffix is appended to the input filename.
86</ul>
John Criswell69d903d2003-09-12 15:46:24 +000087
88<h3>
89OPTIONS
90</h3>
91
92<ul>
93 <li>-disable-fp-elim
94 <br>
John Criswell511a4912003-09-29 20:10:08 +000095 Disable frame pointer elimination optimization.
John Criswell69d903d2003-09-12 15:46:24 +000096 <p>
97
98 <li>-disable-local-ra
99 <br>
John Criswell511a4912003-09-29 20:10:08 +0000100 Use Simple RA instead of Local RegAlloc.
John Criswell69d903d2003-09-12 15:46:24 +0000101 <p>
102
103 <li>-disable-pattern-isel
104 <br>
John Criswell511a4912003-09-29 20:10:08 +0000105 Use the 'simple' X86 instruction selector.
John Criswell69d903d2003-09-12 15:46:24 +0000106 <p>
107
108 <li>-disable-peephole
109 <br>
John Criswell511a4912003-09-29 20:10:08 +0000110 Disable peephole optimization pass.
John Criswell69d903d2003-09-12 15:46:24 +0000111 <p>
112
113 <li>-disable-preopt
114 <br>
John Criswell511a4912003-09-29 20:10:08 +0000115 Disable optimizations prior to instruction selection.
John Criswell69d903d2003-09-12 15:46:24 +0000116 <p>
117
118 <li>-disable-sched
119 <br>
John Criswell511a4912003-09-29 20:10:08 +0000120 Disable local scheduling pass.
John Criswell69d903d2003-09-12 15:46:24 +0000121 <p>
122
123 <li>-disable-strip
124 <br>
John Criswell511a4912003-09-29 20:10:08 +0000125 Do not strip the LLVM bytecode included in executable.
John Criswell69d903d2003-09-12 15:46:24 +0000126 <p>
127
128 <li>-enable-maps
129 <br>
John Criswell511a4912003-09-29 20:10:08 +0000130 Emit LLVM-to-MachineCode mapping info to assembly.
John Criswell69d903d2003-09-12 15:46:24 +0000131 <p>
132
133 <li>-f
134 <br>
135 Overwrite output files
136 <p>
137
138 <li>-load=&lt;plugin.so&gt;
139 <br>
John Criswell511a4912003-09-29 20:10:08 +0000140 Load the specified plugin.
John Criswell69d903d2003-09-12 15:46:24 +0000141 <p>
142
143 <li>-m&lt;arch&gt;
144 <br>
145 Specify the architecture for which to generate assembly. Valid
John Criswell69d903d2003-09-12 15:46:24 +0000146 architectures are:
147
148 <dl compact>
149 <di> x86
150 <dd>
151 IA-32 (Pentium and above)
152 <p>
153
154 <di> sparc
155 <dd>SPARC V9
156 </dl>
157 <p>
158
159 <li>-o &lt;filename&gt;
160 <br>
John Criswell511a4912003-09-29 20:10:08 +0000161 Specify the output filename.
John Criswell69d903d2003-09-12 15:46:24 +0000162 <p>
163
164 <li>-print-machineinstrs
165 <br>
John Criswell511a4912003-09-29 20:10:08 +0000166 Print generated machine code.
John Criswell69d903d2003-09-12 15:46:24 +0000167 <p>
168
169 <li> -help
170 <br>
171 Print a summary of command line options.
172 <p>
173
174 <li> -stats
175 <br>
176 Print statistics.
177 <p>
178
179 <li> -time-passes
180 <br>
181 Record the amount of time needed for each pass and print it to standard
182 error.
183 <p>
184</ul>
185
186<h3>
187EXIT STATUS
188</h3>
189
190If llc succeeds, it will exit with 0. Otherwise, if an error occurs, it
191will exit with a non-zero value.
192
193<h3>
194SEE ALSO
195</h3>
196llvm-dis, lli
197
198<HR>
199<a href="http://llvm.cs.uiuc.edu">LLVM Team</a>
200</body>
201</html>
202