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