=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 
bitcode as input, runs the specified optimizations or analyses on it, and then
outputs the optimized LLVM bitcode 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 LLVM 
bitcode.  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 
bitcode 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. The input must be an LLVM bitcode file.

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
