=pod

=head1 NAME

llvm-extract - extract a function from an LLVM module

=head1 SYNOPSIS

B<llvm-extract> [I<options>] B<--func> I<function-name> [I<filename>]

=head1 DESCRIPTION

The B<llvm-extract> command takes the name of a function and extracts it from
the specified LLVM bitcode file.  It is primarily used as a debugging tool to
reduce test cases from larger programs that are triggering a bug.

In addition to extracting the bitcode of the specified function,
B<llvm-extract> will also remove unreachable global variables, prototypes, and
unused types.

The B<llvm-extract> command reads its input from standard input if filename is
omitted or if filename is -.  The output is always written to standard output,
unless the B<-o> option is specified (see below).

=head1 OPTIONS

=over

=item B<-f>

Force overwrite.  Normally, B<llvm-extract> will refuse to overwrite an
output file that already exists.  With this option, B<llvm-extract>
will overwrite the output file and replace it with new bitcode.

=item B<--func> I<function-name>

Extract the function named I<function-name> from the LLVM bitcode.

=item B<--help>

Print a summary of command line options.

=item B<-o> I<filename>

Specify the output filename.  If filename is "-" (the default), then
B<llvm-extract> sends its output to standard output.

=back

=head1 EXIT STATUS

If B<llvm-extract> succeeds, it will exit with 0.  Otherwise, if an error
occurs, it will exit with a non-zero value.

=head1 SEE ALSO

L<bugpoint|bugpoint>

=head1 AUTHORS

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

=cut
