llc - LLVM static compiler
==========================

SYNOPSIS
--------

:program:`llc` [*options*] [*filename*]

DESCRIPTION
-----------

The :program:`llc` command compiles LLVM source inputs into assembly language
for a specified architecture.  The assembly language output can then be passed
through a native assembler and linker to generate a native executable.

The choice of architecture for the output assembly code is automatically
determined from the input file, unless the :option:`-march` option is used to
override the default.

OPTIONS
-------

If ``filename`` is "``-``" or omitted, :program:`llc` reads from standard input.
Otherwise, it will from ``filename``.  Inputs can be in either the LLVM assembly
language format (``.ll``) or the LLVM bitcode format (``.bc``).

If the :option:`-o` option is omitted, then :program:`llc` will send its output
to standard output if the input is from standard input.  If the :option:`-o`
option specifies "``-``", then the output will also be sent to standard output.

If no :option:`-o` option is specified and an input file other than "``-``" is
specified, then :program:`llc` creates the output filename by taking the input
filename, removing any existing ``.bc`` extension, and adding a ``.s`` suffix.

Other :program:`llc` options are described below.

End-user Options
~~~~~~~~~~~~~~~~

.. option:: -help

 Print a summary of command line options.

.. option:: -O=uint

 Generate code at different optimization levels.  These correspond to the
 ``-O0``, ``-O1``, ``-O2``, and ``-O3`` optimization levels used by
 :program:`clang`.

.. option:: -mtriple=<target triple>

 Override the target triple specified in the input file with the specified
 string.

.. option:: -march=<arch>

 Specify the architecture for which to generate assembly, overriding the target
 encoded in the input file.  See the output of ``llc -help`` for a list of
 valid architectures.  By default this is inferred from the target triple or
 autodetected to the current architecture.

.. option:: -mcpu=<cpuname>

 Specify a specific chip in the current architecture to generate code for.
 By default this is inferred from the target triple and autodetected to
 the current architecture.  For a list of available CPUs, use:

 .. code-block:: none

   llvm-as < /dev/null | llc -march=xyz -mcpu=help

.. option:: -filetype=<output file type>

 Specify what kind of output ``llc`` should generated.  Options are: ``asm``
 for textual assembly ( ``'.s'``), ``obj`` for native object files (``'.o'``)
 and ``null`` for not emitting anything (for performance testing).

 Note that not all targets support all options.

.. option:: -mattr=a1,+a2,-a3,...

 Override or control specific attributes of the target, such as whether SIMD
 operations are enabled or not.  The default set of attributes is set by the
 current CPU.  For a list of available attributes, use:

 .. code-block:: none

   llvm-as < /dev/null | llc -march=xyz -mattr=help

.. option:: --disable-fp-elim

 Disable frame pointer elimination optimization.

.. option:: --disable-excess-fp-precision

 Disable optimizations that may produce excess precision for floating point.
 Note that this option can dramatically slow down code on some systems
 (e.g. X86).

.. option:: --enable-no-infs-fp-math

 Enable optimizations that assume no Inf values.

.. option:: --enable-no-nans-fp-math

 Enable optimizations that assume no NAN values.

.. option:: --enable-unsafe-fp-math

 Enable optimizations that make unsafe assumptions about IEEE math (e.g. that
 addition is associative) or may not work for all input ranges.  These
 optimizations allow the code generator to make use of some instructions which
 would otherwise not be usable (such as ``fsin`` on X86).

.. option:: --enable-correct-eh-support

 Instruct the **lowerinvoke** pass to insert code for correct exception
 handling support.  This is expensive and is by default omitted for efficiency.

.. option:: --stats

 Print statistics recorded by code-generation passes.

.. option:: --time-passes

 Record the amount of time needed for each pass and print a report to standard
 error.

.. option:: --load=<dso_path>

 Dynamically load ``dso_path`` (a path to a dynamically shared object) that
 implements an LLVM target.  This will permit the target name to be used with
 the :option:`-march` option so that code can be generated for that target.

Tuning/Configuration Options
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. option:: --print-machineinstrs

 Print generated machine code between compilation phases (useful for debugging).

.. option:: --regalloc=<allocator>

 Specify the register allocator to use.
 Valid register allocators are:

 *basic*

  Basic register allocator.

 *fast*

  Fast register allocator. It is the default for unoptimized code.

 *greedy*

  Greedy register allocator. It is the default for optimized code.

 *pbqp*

  Register allocator based on 'Partitioned Boolean Quadratic Programming'.

.. option:: --spiller=<spiller>

 Specify the spiller to use for register allocators that support it.  Currently
 this option is used only by the linear scan register allocator.  The default
 ``spiller`` is *local*.  Valid spillers are:

 *simple*

  Simple spiller

 *local*

  Local spiller

Intel IA-32-specific Options
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. option:: --x86-asm-syntax=[att|intel]

 Specify whether to emit assembly code in AT&T syntax (the default) or Intel
 syntax.

EXIT STATUS
-----------

If :program:`llc` succeeds, it will exit with 0.  Otherwise, if an error
occurs, it will exit with a non-zero value.

SEE ALSO
--------

lli

