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.
 |