=pod

=head1 NAME

llvm-ld - LLVM linker

=head1 SYNOPSIS

B<llvm-ld> <options> <files>

=head1 DESCRIPTION

The B<llvm-ld> command is similar to the common Unix utility, C<ld>. It 
links together bytecode modules to produce an executable program.

=head1 OPTIONS

=head2 Input/Output Options

=over

=item B<-o> F<filename>

This overrides the default output file and specifies the name of the file that
should be generated by the linker. By default, B<llvm-ld> generates a file named
F<a.out> for compatibility with B<ld>. The output will be written to
F<filename>.

=item B<-l>F<name>

This option specifies the F<name> of a library to search when resolving symbols
for the program. Only the base name should be specified as F<name>, without a
F<lib> prefix or any suffix. 

=item B<-L>F<Path>

This option tells B<llvm-ld> to look in F<Path> to find any library subsequently
specified with the B<-l> option. The paths will be searched in the order in
which they are specified on the command line. If the library is still not found,
a small set of system specific directories will also be searched. Note that
libraries specified with the B<-l> option that occur I<before> any B<-L> options
will not search the paths given by the B<-L> options following it.

=item B<-link-as-library>

Link the bytecode files together as a library, not an executable. In this mode,
undefined symbols will be permitted.

=item B<-r>

An alias for -link-as-library.

=item B<-march=>C<target>

Specifies the kind of machine for which code or assembly should be generated.

=item B<-native>

Generate a native binary instead of a shell script that runs the JIT from
bytecode.

=item B<-native-cbe>

Generate a native binary with the C back end and compilation with GCC.

=item B<-disable-compression>

Do not compress bytecode files.

=back

=head2 Optimization Options

=over 

=item B<-O0>

An alias for the -O1 option.

=item B<-O1>

Optimize for linking speed, not execution speed. The optimizer will attempt to
reduce the size of the linked program to reduce I/O but will not otherwise
perform any link-time optimizations.

=item B<-O2>

Perform only the minimal or required set of scalar optimizations.

=item B<-03>

An alias for the -O2 option.

=item B<-04>

Perform the standard link time inter-procedural optimizations. This will 
attempt to optimize the program taking the entire program into consideration.

=item B<-O5>

Perform aggressive link time optimizations. This is the same as -O4 but works
more aggressively to optimize the program.

=item B<-disable-inlining>

Do not run the inlining pass. Functions will not be inlined into other
functions.

=item B<-disable-opt>

Completely disable optimization. The various B<-On> options will be ignored and
no link time optimization passes will be run.

=item B<-disable-internalize>

Do not mark all symbols as internal.

=item B<-verify>

Run the verification pass after each of the passes to verify intermediate
results.

=item B<-s>

Strip symbol info from the executable to make it smaller.

=item B<-export-dynamic>

An alias for -disable-internalize

=item B<-load> F<module>

Load an optimization module, F<module>, which is expected to be a dynamic
library that provides the function name C<RunOptimizations>. This function will
be passed the PassManager, and the optimization level (values 0-5 based on the
B<-On> option). This function may add passes to the PassManager that should be
run. This feature allows the optimization passes of B<llvm-ld> to be extended.

=item B<-post-link-opt>F<Path>

Run post-link optimization program. After linking is completed a bytecode file
will be generated. It will be passed to the program specified by F<Path> as the
first argument. The second argument to the program will be the name of a
temporary file into which the program should place its optimized output. For
example, the "no-op optimization" would be a simple shell script:

=over

#!/bin/bash
cp $1 $2

=back

=back

=head2 Miscellaneous Options

=over

=item B<-v>

Specifies verbose mode. In this mode the linker will print additional
information about the actions it takes, programs it executes, etc. 

=back

=head1 EXIT STATUS

If B<llvm-ld> succeeds, it will exit with 0 return code.  If an error occurs,
it will exit with a non-zero return code.

=head1 ENVIRONMENT

The C<LLVM_LIB_SEARCH_PATH> environment variable is used to find bytecode
libraries. Any paths specified in this variable will be searched after the C<-L>
options.

=head1 SEE ALSO

L<llvm-ar|llvm-ar>

=head1 AUTHORS

Maintained by the LLVM Team (L<http://llvm.org>).

=cut
