2012-02-05 23:56:22 +00:00
|
|
|
.\" $FreeBSD$
|
2013-06-12 18:48:53 +00:00
|
|
|
.TH "OPT" "1" "2013-06-10" "3.3" "LLVM"
|
2012-08-20 18:33:03 +00:00
|
|
|
.SH NAME
|
|
|
|
opt \- LLVM optimizer
|
|
|
|
.
|
|
|
|
.nr rst2man-indent-level 0
|
|
|
|
.
|
|
|
|
.de1 rstReportMargin
|
|
|
|
\\$1 \\n[an-margin]
|
|
|
|
level \\n[rst2man-indent-level]
|
|
|
|
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
|
-
|
|
|
|
\\n[rst2man-indent0]
|
|
|
|
\\n[rst2man-indent1]
|
|
|
|
\\n[rst2man-indent2]
|
2012-02-05 23:56:22 +00:00
|
|
|
..
|
2012-08-20 18:33:03 +00:00
|
|
|
.de1 INDENT
|
|
|
|
.\" .rstReportMargin pre:
|
|
|
|
. RS \\$1
|
|
|
|
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
|
|
|
|
. nr rst2man-indent-level +1
|
|
|
|
.\" .rstReportMargin post:
|
2012-02-05 23:56:22 +00:00
|
|
|
..
|
2012-08-20 18:33:03 +00:00
|
|
|
.de UNINDENT
|
|
|
|
. RE
|
|
|
|
.\" indent \\n[an-margin]
|
|
|
|
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
|
.nr rst2man-indent-level -1
|
|
|
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
2012-02-05 23:56:22 +00:00
|
|
|
..
|
2012-08-20 18:33:03 +00:00
|
|
|
.\" Man page generated from reStructuredText.
|
|
|
|
.
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.sp
|
|
|
|
\fBopt\fP [\fIoptions\fP] [\fIfilename\fP]
|
|
|
|
.SH DESCRIPTION
|
|
|
|
.sp
|
2013-04-12 17:57:40 +00:00
|
|
|
The \fBopt\fP command is the modular LLVM optimizer and analyzer. It
|
|
|
|
takes LLVM source files as input, runs the specified optimizations or analyses
|
|
|
|
on it, and then outputs the optimized file or the analysis results. The
|
|
|
|
function of \fBopt\fP depends on whether the \fI\-analyze\fP option is
|
|
|
|
given.
|
2012-08-20 18:33:03 +00:00
|
|
|
.sp
|
2013-04-12 17:57:40 +00:00
|
|
|
When \fI\-analyze\fP is specified, \fBopt\fP performs various analyses
|
|
|
|
of the input source. 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
|
2012-02-05 23:56:22 +00:00
|
|
|
program.
|
2012-08-20 18:33:03 +00:00
|
|
|
.sp
|
2013-04-12 17:57:40 +00:00
|
|
|
While \fI\-analyze\fP is \fInot\fP given, \fBopt\fP attempts to produce an
|
|
|
|
optimized output file. The optimizations available via \fBopt\fP depend
|
|
|
|
upon what libraries were linked into it as well as any additional libraries
|
2013-06-12 18:48:53 +00:00
|
|
|
that have been loaded with the \fI\%-load\fP option. Use the \fI\%-help\fP
|
2013-04-12 17:57:40 +00:00
|
|
|
option to determine what optimizations you can use.
|
2012-08-20 18:33:03 +00:00
|
|
|
.sp
|
2013-04-12 17:57:40 +00:00
|
|
|
If \fBfilename\fP is omitted from the command line or is "\fB\-\fP", \fBopt\fP
|
|
|
|
reads its input from standard input. Inputs can be in either the LLVM assembly
|
|
|
|
language format (\fB.ll\fP) or the LLVM bitcode format (\fB.bc\fP).
|
2012-08-20 18:33:03 +00:00
|
|
|
.sp
|
2013-06-12 18:48:53 +00:00
|
|
|
If an output filename is not specified with the \fI\%-o\fP option,
|
2013-04-12 17:57:40 +00:00
|
|
|
\fBopt\fP writes its output to the standard output.
|
2012-08-20 18:33:03 +00:00
|
|
|
.SH OPTIONS
|
|
|
|
.INDENT 0.0
|
2013-04-12 17:57:40 +00:00
|
|
|
.TP
|
|
|
|
.B \-f
|
2012-08-20 18:33:03 +00:00
|
|
|
Enable binary output on terminals. Normally, \fBopt\fP will refuse to
|
2013-04-12 17:57:40 +00:00
|
|
|
write raw bitcode output if the output stream is a terminal. With this option,
|
2012-08-20 18:33:03 +00:00
|
|
|
\fBopt\fP will write raw bitcode regardless of the output device.
|
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2013-04-12 17:57:40 +00:00
|
|
|
.TP
|
|
|
|
.B \-help
|
2012-02-05 23:56:22 +00:00
|
|
|
Print a summary of command line options.
|
2012-08-20 18:33:03 +00:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2013-04-12 17:57:40 +00:00
|
|
|
.TP
|
|
|
|
.B \-o <filename>
|
2012-02-05 23:56:22 +00:00
|
|
|
Specify the output filename.
|
2012-08-20 18:33:03 +00:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2013-04-12 17:57:40 +00:00
|
|
|
.TP
|
|
|
|
.B \-S
|
2012-08-20 18:33:03 +00:00
|
|
|
Write output in LLVM intermediate language (instead of bitcode).
|
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2013-04-12 17:57:40 +00:00
|
|
|
.TP
|
|
|
|
.B \-{passname}
|
|
|
|
\fBopt\fP provides the ability to run any of LLVM\(aqs optimization or
|
2013-06-12 18:48:53 +00:00
|
|
|
analysis passes in any order. The \fI\%-help\fP option lists all the passes
|
2013-04-12 17:57:40 +00:00
|
|
|
available. The order in which the options occur on the command line are the
|
|
|
|
order in which they are executed (within pass constraints).
|
2012-08-20 18:33:03 +00:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2013-04-12 17:57:40 +00:00
|
|
|
.TP
|
|
|
|
.B \-std\-compile\-opts
|
2012-08-20 18:33:03 +00:00
|
|
|
This is short hand for a standard list of \fIcompile time optimization\fP passes.
|
2013-04-12 17:57:40 +00:00
|
|
|
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:
|
|
|
|
.INDENT 7.0
|
|
|
|
.INDENT 3.5
|
2012-08-20 18:33:03 +00:00
|
|
|
.sp
|
|
|
|
.nf
|
|
|
|
.ft C
|
|
|
|
llvm\-as < /dev/null | opt \-std\-compile\-opts \-disable\-output \-debug\-pass=Arguments
|
|
|
|
.ft P
|
|
|
|
.fi
|
|
|
|
.UNINDENT
|
|
|
|
.UNINDENT
|
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2013-04-12 17:57:40 +00:00
|
|
|
.TP
|
|
|
|
.B \-disable\-inlining
|
|
|
|
This option is only meaningful when \fI\%-std-compile-opts\fP is given. It
|
|
|
|
simply removes the inlining pass from the standard list.
|
2012-08-20 18:33:03 +00:00
|
|
|
.UNINDENT
|
2013-04-12 17:57:40 +00:00
|
|
|
.INDENT 0.0
|
|
|
|
.TP
|
|
|
|
.B \-disable\-opt
|
|
|
|
This option is only meaningful when \fI\%-std-compile-opts\fP is given. It
|
|
|
|
disables most, but not all, of the \fI\%-std-compile-opts\fP. The ones that
|
|
|
|
remain are \fI\-verify\fP, \fI\-lower\-setjmp\fP, and
|
|
|
|
\fI\-funcresolve\fP.
|
2012-08-20 18:33:03 +00:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2013-04-12 17:57:40 +00:00
|
|
|
.TP
|
|
|
|
.B \-strip\-debug
|
2012-08-20 18:33:03 +00:00
|
|
|
This option causes opt to strip debug information from the module before
|
2013-04-12 17:57:40 +00:00
|
|
|
applying other optimizations. It is essentially the same as \fI\-strip\fP
|
|
|
|
but it ensures that stripping of debug information is done first.
|
2012-08-20 18:33:03 +00:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2013-04-12 17:57:40 +00:00
|
|
|
.TP
|
|
|
|
.B \-verify\-each
|
|
|
|
This option causes opt to add a verify pass after every pass otherwise
|
|
|
|
specified on the command line (including \fI\-verify\fP). 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
|
|
|
|
\fI\%-std-compile-opts\fP and \fI\%-verify-each\fP can quickly track down
|
|
|
|
this kind of problem.
|
2012-08-20 18:33:03 +00:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2013-04-12 17:57:40 +00:00
|
|
|
.TP
|
|
|
|
.B \-profile\-info\-file <filename>
|
|
|
|
Specify the name of the file loaded by the \fB\-profile\-loader\fP option.
|
2012-08-20 18:33:03 +00:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2013-04-12 17:57:40 +00:00
|
|
|
.TP
|
|
|
|
.B \-stats
|
2012-02-05 23:56:22 +00:00
|
|
|
Print statistics.
|
2012-08-20 18:33:03 +00:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2013-04-12 17:57:40 +00:00
|
|
|
.TP
|
|
|
|
.B \-time\-passes
|
2012-02-05 23:56:22 +00:00
|
|
|
Record the amount of time needed for each pass and print it to standard
|
|
|
|
error.
|
2012-08-20 18:33:03 +00:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2013-04-12 17:57:40 +00:00
|
|
|
.TP
|
|
|
|
.B \-debug
|
|
|
|
If this is a debug build, this option will enable debug printouts from passes
|
|
|
|
which use the \fBDEBUG()\fP macro. See the \fI\%LLVM Programmer's Manual\fP, section \fB#DEBUG\fP for more information.
|
2012-08-20 18:33:03 +00:00
|
|
|
.UNINDENT
|
|
|
|
.INDENT 0.0
|
2013-04-12 17:57:40 +00:00
|
|
|
.TP
|
|
|
|
.B \-load=<plugin>
|
|
|
|
Load the dynamic object \fBplugin\fP. 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
|
2013-06-12 18:48:53 +00:00
|
|
|
complete list of optimizations, use the \fI\%-help\fP and \fI\%-load\fP
|
2013-04-12 17:57:40 +00:00
|
|
|
options together. For example:
|
|
|
|
.INDENT 7.0
|
2012-08-20 18:33:03 +00:00
|
|
|
.INDENT 3.5
|
|
|
|
.sp
|
|
|
|
.nf
|
|
|
|
.ft C
|
|
|
|
opt \-load=plugin.so \-help
|
|
|
|
.ft P
|
|
|
|
.fi
|
|
|
|
.UNINDENT
|
|
|
|
.UNINDENT
|
2013-04-12 17:57:40 +00:00
|
|
|
.UNINDENT
|
2012-08-20 18:33:03 +00:00
|
|
|
.INDENT 0.0
|
2013-04-12 17:57:40 +00:00
|
|
|
.TP
|
|
|
|
.B \-p
|
2012-02-05 23:56:22 +00:00
|
|
|
Print module after each transformation.
|
2012-08-20 18:33:03 +00:00
|
|
|
.UNINDENT
|
|
|
|
.SH EXIT STATUS
|
|
|
|
.sp
|
|
|
|
If \fBopt\fP succeeds, it will exit with 0. Otherwise, if an error
|
|
|
|
occurs, it will exit with a non\-zero value.
|
|
|
|
.SH AUTHOR
|
|
|
|
Maintained by The LLVM Team (http://llvm.org/).
|
|
|
|
.SH COPYRIGHT
|
2013-04-12 17:57:40 +00:00
|
|
|
2003-2013, LLVM Project
|
2012-08-20 18:33:03 +00:00
|
|
|
.\" Generated by docutils manpage writer.
|
|
|
|
.
|