=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<--rfunc> I<function-regular-expr>

Extract the function(s) matching I<function-regular-expr> from the LLVM bitcode.
All functions matching the regular expression will be extracted.  May be 
specified multiple times.

=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<--rglob> I<glob-regular-expr>

Extract the global variable(s) matching I<global-regular-expr> from the LLVM
bitcode. All global variables matching the regular expression will be extracted.
May be specified multiple times.

=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
