=pod | |
=head1 NAME | |
opt - LLVM optimizer | |
=head1 SYNOPSIS | |
B<opt> [I<options>] [I<filename>] | |
=head1 DESCRIPTION | |
The B<opt> command is the modular LLVM optimizer and analyzer. It takes LLVM | |
source files as input, runs the specified optimizations or analyses on it, and then | |
outputs the optimized file or the analysis results. The function of | |
B<opt> depends on whether the B<-analyze> option is given. | |
When B<-analyze> is specified, B<opt> performs various analyses of the input | |
source. It will usually print the results on standard output, but in a few | |
cases, it will print output to standard error or generate a file with the | |
analysis output, which is usually done when the output is meant for another | |
program. | |
While B<-analyze> is I<not> given, B<opt> attempts to produce an optimized | |
output file. The optimizations available via B<opt> depend upon what | |
libraries were linked into it as well as any additional libraries that have | |
been loaded with the B<-load> option. Use the B<-help> option to determine | |
what optimizations you can use. | |
If I<filename> is omitted from the command line or is I<->, B<opt> reads its | |
input from standard input. Inputs can be in either the LLVM assembly language | |
format (.ll) or the LLVM bitcode format (.bc). | |
If an output filename is not specified with the B<-o> option, B<opt> | |
writes its output to the standard output. | |
=head1 OPTIONS | |
=over | |
=item B<-f> | |
Enable binary output on terminals. Normally, B<opt> will refuse to | |
write raw bitcode output if the output stream is a terminal. With this option, | |
B<opt> will write raw bitcode regardless of the output device. | |
=item B<-help> | |
Print a summary of command line options. | |
=item B<-o> I<filename> | |
Specify the output filename. | |
=item B<-S> | |
Write output in LLVM intermediate language (instead of bitcode). | |
=item B<-{passname}> | |
B<opt> provides the ability to run any of LLVM's optimization or analysis passes | |
in any order. The B<-help> option lists all the passes available. The order in | |
which the options occur on the command line are the order in which they are | |
executed (within pass constraints). | |
=item B<-std-compile-opts> | |
This is short hand for a standard list of I<compile time optimization> passes. | |
This is typically used to optimize the output from the llvm-gcc front end. It | |
might be useful for other front end compilers as well. To discover the full set | |
of options available, use the following command: | |
llvm-as < /dev/null | opt -std-compile-opts -disable-output -debug-pass=Arguments | |
=item B<-disable-inlining> | |
This option is only meaningful when B<-std-compile-opts> is given. It simply | |
removes the inlining pass from the standard list. | |
=item B<-disable-opt> | |
This option is only meaningful when B<-std-compile-opts> is given. It disables | |
most, but not all, of the B<-std-compile-opts>. The ones that remain are | |
B<-verify>, B<-lower-setjmp>, and B<-funcresolve>. | |
=item B<-strip-debug> | |
This option causes opt to strip debug information from the module before | |
applying other optimizations. It is essentially the same as B<-strip> but it | |
ensures that stripping of debug information is done first. | |
=item B<-verify-each> | |
This option causes opt to add a verify pass after every pass otherwise specified | |
on the command line (including B<-verify>). This is useful for cases where it | |
is suspected that a pass is creating an invalid module but it is not clear which | |
pass is doing it. The combination of B<-std-compile-opts> and B<-verify-each> | |
can quickly track down this kind of problem. | |
=item B<-profile-info-file> I<filename> | |
Specify the name of the file loaded by the -profile-loader option. | |
=item B<-stats> | |
Print statistics. | |
=item B<-time-passes> | |
Record the amount of time needed for each pass and print it to standard | |
error. | |
=item B<-debug> | |
If this is a debug build, this option will enable debug printouts | |
from passes which use the I<DEBUG()> macro. See the B<LLVM Programmer's | |
Manual>, section I<#DEBUG> for more information. | |
=item B<-load>=I<plugin> | |
Load the dynamic object I<plugin>. This object should register new optimization | |
or analysis passes. Once loaded, the object will add new command line options to | |
enable various optimizations or analyses. To see the new complete list of | |
optimizations, use the B<-help> and B<-load> options together. For example: | |
opt -load=plugin.so -help | |
=item B<-p> | |
Print module after each transformation. | |
=back | |
=head1 EXIT STATUS | |
If B<opt> succeeds, it will exit with 0. Otherwise, if an error | |
occurs, it will exit with a non-zero value. | |
=head1 AUTHORS | |
Maintained by the LLVM Team (L<http://llvm.org/>). | |
=cut |