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

=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.cs.uiuc.edu>).

=cut
