125 lines
3.9 KiB
ReStructuredText
125 lines
3.9 KiB
ReStructuredText
|
opt - LLVM optimizer
|
||
|
====================
|
||
|
|
||
|
.. program:: opt
|
||
|
|
||
|
SYNOPSIS
|
||
|
--------
|
||
|
|
||
|
:program:`opt` [*options*] [*filename*]
|
||
|
|
||
|
DESCRIPTION
|
||
|
-----------
|
||
|
|
||
|
The :program:`opt` 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 :program:`opt` depends on whether the `-analyze` option is
|
||
|
given.
|
||
|
|
||
|
When `-analyze` is specified, :program:`opt` 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
|
||
|
program.
|
||
|
|
||
|
While `-analyze` is *not* given, :program:`opt` attempts to produce an
|
||
|
optimized output file. The optimizations available via :program:`opt` depend
|
||
|
upon what libraries were linked into it as well as any additional libraries
|
||
|
that have been loaded with the :option:`-load` option. Use the :option:`-help`
|
||
|
option to determine what optimizations you can use.
|
||
|
|
||
|
If ``filename`` is omitted from the command line or is "``-``", :program:`opt`
|
||
|
reads its input from standard input. Inputs can be in either the LLVM assembly
|
||
|
language format (``.ll``) or the LLVM bitcode format (``.bc``).
|
||
|
|
||
|
If an output filename is not specified with the :option:`-o` option,
|
||
|
:program:`opt` writes its output to the standard output.
|
||
|
|
||
|
OPTIONS
|
||
|
-------
|
||
|
|
||
|
.. option:: -f
|
||
|
|
||
|
Enable binary output on terminals. Normally, :program:`opt` will refuse to
|
||
|
write raw bitcode output if the output stream is a terminal. With this option,
|
||
|
:program:`opt` will write raw bitcode regardless of the output device.
|
||
|
|
||
|
.. option:: -help
|
||
|
|
||
|
Print a summary of command line options.
|
||
|
|
||
|
.. option:: -o <filename>
|
||
|
|
||
|
Specify the output filename.
|
||
|
|
||
|
.. option:: -S
|
||
|
|
||
|
Write output in LLVM intermediate language (instead of bitcode).
|
||
|
|
||
|
.. option:: -{passname}
|
||
|
|
||
|
:program:`opt` provides the ability to run any of LLVM's optimization or
|
||
|
analysis passes in any order. The :option:`-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).
|
||
|
|
||
|
.. option:: -disable-inlining
|
||
|
|
||
|
This option simply removes the inlining pass from the standard list.
|
||
|
|
||
|
.. option:: -disable-opt
|
||
|
|
||
|
This option is only meaningful when `-std-link-opts` is given. It
|
||
|
disables most passes.
|
||
|
|
||
|
.. option:: -strip-debug
|
||
|
|
||
|
This option causes opt to strip debug information from the module before
|
||
|
applying other optimizations. It is essentially the same as `-strip`
|
||
|
but it ensures that stripping of debug information is done first.
|
||
|
|
||
|
.. option:: -verify-each
|
||
|
|
||
|
This option causes opt to add a verify pass after every pass otherwise
|
||
|
specified on the command line (including `-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.
|
||
|
|
||
|
.. option:: -stats
|
||
|
|
||
|
Print statistics.
|
||
|
|
||
|
.. option:: -time-passes
|
||
|
|
||
|
Record the amount of time needed for each pass and print it to standard
|
||
|
error.
|
||
|
|
||
|
.. option:: -debug
|
||
|
|
||
|
If this is a debug build, this option will enable debug printouts from passes
|
||
|
which use the ``LLVM_DEBUG()`` macro. See the `LLVM Programmer's Manual
|
||
|
<../ProgrammersManual.html>`_, section ``#DEBUG`` for more information.
|
||
|
|
||
|
.. option:: -load=<plugin>
|
||
|
|
||
|
Load the dynamic object ``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 :option:`-help` and :option:`-load`
|
||
|
options together. For example:
|
||
|
|
||
|
.. code-block:: sh
|
||
|
|
||
|
opt -load=plugin.so -help
|
||
|
|
||
|
.. option:: -p
|
||
|
|
||
|
Print module after each transformation.
|
||
|
|
||
|
EXIT STATUS
|
||
|
-----------
|
||
|
|
||
|
If :program:`opt` succeeds, it will exit with 0. Otherwise, if an error
|
||
|
occurs, it will exit with a non-zero value.
|