=pod

=head1 NAME

bugpoint - automatic test case reduction tool

=head1 SYNOPSIS

B<bugpoint> [I<options>] [I<input LLVM ll/bc files>] [I<LLVM passes>] B<--args>
I<program arguments>

=head1 DESCRIPTION

B<bugpoint> narrows down the source of problems in LLVM tools and passes.  It
can be used to debug three types of failures: optimizer crashes, miscompilations
by optimizers, or bad native code generation (including problems in the static
and JIT compilers).  It aims to reduce large test cases to small, useful ones.
For more information on the design and inner workings of B<bugpoint>, as well as
advice for using bugpoint, see F<llvm/docs/Bugpoint.html> in the LLVM
distribution.

=head1 OPTIONS

=over 

=item B<--additional-so> F<library>

Load the dynamic shared object F<library> into the test program whenever it is
run.  This is useful if you are debugging programs which depend on non-LLVM
libraries (such as the X or curses libraries) to run.

=item B<--append-exit-code>=I<{true,false}>

Append the test programs exit code to the output file so that a change in exit
code is considered a test failure. Defaults to false.

=item B<--args> I<program args>

Pass all arguments specified after -args to the test program whenever it runs.
Note that if any of the I<program args> start with a '-', you should use:

    bugpoint [bugpoint args] --args -- [program args]

The "--" right after the B<--args> option tells B<bugpoint> to consider any
options starting with C<-> to be part of the B<--args> option, not as options to
B<bugpoint> itself.

=item B<--tool-args> I<tool args>

Pass all arguments specified after --tool-args to the LLVM tool under test
(B<llc>, B<lli>, etc.) whenever it runs.  You should use this option in the
following way:

    bugpoint [bugpoint args] --tool-args -- [tool args]

The "--" right after the B<--tool-args> option tells B<bugpoint> to consider any
options starting with C<-> to be part of the B<--tool-args> option, not as
options to B<bugpoint> itself. (See B<--args>, above.)

=item B<--disable-{dce,simplifycfg}>

Do not run the specified passes to clean up and reduce the size of the test
program. By default, B<bugpoint> uses these passes internally when attempting to
reduce test programs.  If you're trying to find a bug in one of these passes,
B<bugpoint> may crash.

=item B<--enable-valgrind>

Use valgrind to find faults in the optimization phase. This will allow
bugpoint to find otherwise asymptomatic problems caused by memory
mis-management.

=item B<-find-bugs>

Continually randomize the specified passes and run them on the test program
until a bug is found or the user kills B<bugpoint>. 

=item B<--help>

Print a summary of command line options.

=item B<--input> F<filename>

Open F<filename> and redirect the standard input of the test program, whenever
it runs, to come from that file.

=item B<--load> F<plugin>

Load the dynamic object F<plugin> into B<bugpoint> itself.  This object should
register new optimization passes.  Once loaded, the object will add new command
line options to enable various optimizations.  To see the new complete list of
optimizations, use the B<--help> and B<--load> options together; for example:

    bugpoint --load myNewPass.so --help

=item B<--mlimit> F<megabytes>

Specifies an upper limit on memory usage of the optimization and codegen. Set
to zero to disable the limit.

=item B<--output> F<filename>

Whenever the test program produces output on its standard output stream, it
should match the contents of F<filename> (the "reference output"). If you
do not use this option, B<bugpoint> will attempt to generate a reference output
by compiling the program with the C backend and running it.

=item B<--profile-info-file> F<filename>

Profile file loaded by B<--profile-loader>.

=item B<--run-{int,jit,llc,cbe}>

Whenever the test program is compiled, B<bugpoint> should generate code for it
using the specified code generator.  These options allow you to choose the
interpreter, the JIT compiler, the static native code compiler, or the C
backend, respectively.

=back

=head1 EXIT STATUS

If B<bugpoint> succeeds in finding a problem, it will exit with 0.  Otherwise,
if an error occurs, it will exit with a non-zero value.

=head1 SEE ALSO

L<opt|opt>

=head1 AUTHOR

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

=cut
