John Bauman | 66b8ab2 | 2014-05-06 15:57:45 -0400 | [diff] [blame^] | 1 | =pod
|
| 2 |
|
| 3 | =head1 NAME
|
| 4 |
|
| 5 | opt - LLVM optimizer
|
| 6 |
|
| 7 | =head1 SYNOPSIS
|
| 8 |
|
| 9 | B<opt> [I<options>] [I<filename>]
|
| 10 |
|
| 11 | =head1 DESCRIPTION
|
| 12 |
|
| 13 | The B<opt> command is the modular LLVM optimizer and analyzer. It takes LLVM
|
| 14 | source files as input, runs the specified optimizations or analyses on it, and then
|
| 15 | outputs the optimized file or the analysis results. The function of
|
| 16 | B<opt> depends on whether the B<-analyze> option is given.
|
| 17 |
|
| 18 | When B<-analyze> is specified, B<opt> performs various analyses of the input
|
| 19 | source. It will usually print the results on standard output, but in a few
|
| 20 | cases, it will print output to standard error or generate a file with the
|
| 21 | analysis output, which is usually done when the output is meant for another
|
| 22 | program.
|
| 23 |
|
| 24 | While B<-analyze> is I<not> given, B<opt> attempts to produce an optimized
|
| 25 | output file. The optimizations available via B<opt> depend upon what
|
| 26 | libraries were linked into it as well as any additional libraries that have
|
| 27 | been loaded with the B<-load> option. Use the B<-help> option to determine
|
| 28 | what optimizations you can use.
|
| 29 |
|
| 30 | If I<filename> is omitted from the command line or is I<->, B<opt> reads its
|
| 31 | input from standard input. Inputs can be in either the LLVM assembly language
|
| 32 | format (.ll) or the LLVM bitcode format (.bc).
|
| 33 |
|
| 34 | If an output filename is not specified with the B<-o> option, B<opt>
|
| 35 | writes its output to the standard output.
|
| 36 |
|
| 37 | =head1 OPTIONS
|
| 38 |
|
| 39 | =over
|
| 40 |
|
| 41 | =item B<-f>
|
| 42 |
|
| 43 | Enable binary output on terminals. Normally, B<opt> will refuse to
|
| 44 | write raw bitcode output if the output stream is a terminal. With this option,
|
| 45 | B<opt> will write raw bitcode regardless of the output device.
|
| 46 |
|
| 47 | =item B<-help>
|
| 48 |
|
| 49 | Print a summary of command line options.
|
| 50 |
|
| 51 | =item B<-o> I<filename>
|
| 52 |
|
| 53 | Specify the output filename.
|
| 54 |
|
| 55 | =item B<-S>
|
| 56 |
|
| 57 | Write output in LLVM intermediate language (instead of bitcode).
|
| 58 |
|
| 59 | =item B<-{passname}>
|
| 60 |
|
| 61 | B<opt> provides the ability to run any of LLVM's optimization or analysis passes
|
| 62 | in any order. The B<-help> option lists all the passes available. The order in
|
| 63 | which the options occur on the command line are the order in which they are
|
| 64 | executed (within pass constraints).
|
| 65 |
|
| 66 | =item B<-std-compile-opts>
|
| 67 |
|
| 68 | This is short hand for a standard list of I<compile time optimization> passes.
|
| 69 | This is typically used to optimize the output from the llvm-gcc front end. It
|
| 70 | might be useful for other front end compilers as well. To discover the full set
|
| 71 | of options available, use the following command:
|
| 72 |
|
| 73 | llvm-as < /dev/null | opt -std-compile-opts -disable-output -debug-pass=Arguments
|
| 74 |
|
| 75 | =item B<-disable-inlining>
|
| 76 |
|
| 77 | This option is only meaningful when B<-std-compile-opts> is given. It simply
|
| 78 | removes the inlining pass from the standard list.
|
| 79 |
|
| 80 | =item B<-disable-opt>
|
| 81 |
|
| 82 | This option is only meaningful when B<-std-compile-opts> is given. It disables
|
| 83 | most, but not all, of the B<-std-compile-opts>. The ones that remain are
|
| 84 | B<-verify>, B<-lower-setjmp>, and B<-funcresolve>.
|
| 85 |
|
| 86 | =item B<-strip-debug>
|
| 87 |
|
| 88 | This option causes opt to strip debug information from the module before
|
| 89 | applying other optimizations. It is essentially the same as B<-strip> but it
|
| 90 | ensures that stripping of debug information is done first.
|
| 91 |
|
| 92 | =item B<-verify-each>
|
| 93 |
|
| 94 | This option causes opt to add a verify pass after every pass otherwise specified
|
| 95 | on the command line (including B<-verify>). This is useful for cases where it
|
| 96 | is suspected that a pass is creating an invalid module but it is not clear which
|
| 97 | pass is doing it. The combination of B<-std-compile-opts> and B<-verify-each>
|
| 98 | can quickly track down this kind of problem.
|
| 99 |
|
| 100 | =item B<-profile-info-file> I<filename>
|
| 101 |
|
| 102 | Specify the name of the file loaded by the -profile-loader option.
|
| 103 |
|
| 104 | =item B<-stats>
|
| 105 |
|
| 106 | Print statistics.
|
| 107 |
|
| 108 | =item B<-time-passes>
|
| 109 |
|
| 110 | Record the amount of time needed for each pass and print it to standard
|
| 111 | error.
|
| 112 |
|
| 113 | =item B<-debug>
|
| 114 |
|
| 115 | If this is a debug build, this option will enable debug printouts
|
| 116 | from passes which use the I<DEBUG()> macro. See the B<LLVM Programmer's
|
| 117 | Manual>, section I<#DEBUG> for more information.
|
| 118 |
|
| 119 | =item B<-load>=I<plugin>
|
| 120 |
|
| 121 | Load the dynamic object I<plugin>. This object should register new optimization
|
| 122 | or analysis passes. Once loaded, the object will add new command line options to
|
| 123 | enable various optimizations or analyses. To see the new complete list of
|
| 124 | optimizations, use the B<-help> and B<-load> options together. For example:
|
| 125 |
|
| 126 | opt -load=plugin.so -help
|
| 127 |
|
| 128 | =item B<-p>
|
| 129 |
|
| 130 | Print module after each transformation.
|
| 131 |
|
| 132 | =back
|
| 133 |
|
| 134 | =head1 EXIT STATUS
|
| 135 |
|
| 136 | If B<opt> succeeds, it will exit with 0. Otherwise, if an error
|
| 137 | occurs, it will exit with a non-zero value.
|
| 138 |
|
| 139 | =head1 AUTHORS
|
| 140 |
|
| 141 | Maintained by the LLVM Team (L<http://llvm.org/>).
|
| 142 |
|
| 143 | =cut
|