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

Enable binary output on terminals.  Normally, B<llvm-extract> will refuse to
write raw bitcode output if the output stream is a terminal. With this option,
B<llvm-extract> will write raw bitcode regardless of the output device.

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

Extract the function named I<function-name> from the LLVM bitcode. May be
specified multiple times to extract multiple functions at once.

=item B<--glob> I<global-name>

Extract the global variable named I<global-name> from the LLVM bitcode. May be
specified multiple times to extract multiple global variables at once.

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

=item B<-S>

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

=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
