llvm-link - LLVM bitcode linker
===============================

.. program:: llvm-link

SYNOPSIS
--------

:program:`llvm-link` [*options*] *filename ...*

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

:program:`llvm-link` takes several LLVM bitcode files and links them together
into a single LLVM bitcode file.  It writes the output file to standard output,
unless the :option:`-o` option is used to specify a filename.

OPTIONS
-------

.. option:: -f

 Enable binary output on terminals.  Normally, :program:`llvm-link` will refuse
 to write raw bitcode output if the output stream is a terminal. With this
 option, :program:`llvm-link` will write raw bitcode regardless of the output
 device.

.. option:: -o filename

 Specify the output file name.  If ``filename`` is "``-``", then
 :program:`llvm-link` will write its output to standard output.

.. option:: -S

 Write output in LLVM intermediate language (instead of bitcode).

.. option:: -d

 If specified, :program:`llvm-link` prints a human-readable version of the
 output bitcode file to standard error.

.. option:: --help

 Print a summary of command line options.

.. option:: -v

 Verbose mode.  Print information about what :program:`llvm-link` is doing.
 This typically includes a message for each bitcode file linked in and for each
 library found.

.. option:: --override <filename>

  Adds the passed-in file to the link and overrides symbols that have already
  been declared with the definitions in the file that is passed in. This flag
  can be specified multiple times to have multiple files act as overrides. If
  a symbol is declared more than twice, the definition from the file declared
  last takes precedence.

.. option:: --import <function:filename>

  Specify a function that should be imported from the specified file for
  linking with ThinLTO. This option can be specified multiple times to import
  multiple functions.

.. option:: --summary-index <filename>

  Specify the path to a file containing the module summary index with the
  results of an earlier ThinLTO link. This option is required when 
  `--import` is used.

.. option:: --internalize

  Maintains existing linkage for symbols defined in the first input and
  converts linkage in all other inputs to internal linkage unless they are
  referenced by `llvm*.used` or are special-cased runtime functions (e.g.
  stack protector runtime).

.. option:: --disable-debug-info-type-map

  Disables the use of a uniquing type map for debug info.

.. option:: --only-needed

  Link only needed symbols.

.. option:: --disable-lazy-loading

  Disable lazy module loading.

.. option:: --suppress-warnings

  Suppress all linker warnings.

.. option:: --preserve-bc-uselistorder
  
  Preserve the use-list order when writing LLVM bitcode.

.. option:: --preserve-ll-uselistorder

  Preserve the use-list order when writing LLVM assembly.

.. option:: --ignore-non-bitcode

  Do not error out when a non-bitcode file is encountered while processing
  an archive.

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

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