|  | =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> | 
|  |  | 
|  | Force overwrite.  Normally, B<opt> will refuse to overwrite an | 
|  | output file that already exists.  With this option, B<opt> will | 
|  | overwrite the output file and replace it with new bitcode. | 
|  |  | 
|  | =item B<-help> | 
|  |  | 
|  | Print a summary of command line options. | 
|  |  | 
|  | =item B<-o> I<filename> | 
|  |  | 
|  | Specify the output filename. | 
|  |  | 
|  | =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 |