Try an indent level for better formatting.
[oota-llvm.git] / docs / CommandGuide / opt.pod
index 64062ec49df4eca2c7c20b6431e65c3f4a5a05d3..75b7eddd4cf13ef2311a5a6a4355773947753910 100644 (file)
@@ -10,17 +10,25 @@ B<opt> [I<options>] [I<filename>]
 
 =head1 DESCRIPTION
 
-The B<opt> command is the modular LLVM optimizer.  It takes LLVM
-bytecode as input, runs the specified optimizations on it, and then
-outputs the optimized LLVM bytecode.
-
-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 no filename is specified on the command line, B<opt> reads its
-input from standard input.
+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.
@@ -33,16 +41,57 @@ writes its output to the standard output.
 
 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 bytecode.
+overwrite the output file and replace it with new bitcode.
 
 =item B<-help>
 
-Print a summary of command line options.
+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.
@@ -64,16 +113,12 @@ Manual>, section I<#DEBUG> for more information.
 
 =item B<-load>=I<plugin>
 
-Load the dynamic object I<plugin>.  This object should register new
-optimization passes.  Once loaded, the object will add new command line
-options to enable various optimizations.  To see the new complete list
-of optimizations, use the B<-help> and B<-load> options together:
-
-=over
-
-B<opt -load>=I<plugin> B<-help>
+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:
 
-=back
+   opt -load=plugin.so -help
 
 =item B<-p>
 
@@ -86,12 +131,8 @@ Print module after each transformation.
 If B<opt> succeeds, it will exit with 0.  Otherwise, if an error
 occurs, it will exit with a non-zero value.
 
-=head1 SEE ALSO
-
-L<analyze|analyze>
-
 =head1 AUTHORS
 
-Maintained by the LLVM Team (L<http://llvm.cs.uiuc.edu>).
+Maintained by the LLVM Team (L<http://llvm.org>).
 
 =cut