<html>
<title>LLVM: bugpoint tool</title>

<body bgcolor=white>

<center><h1>LLVM: <tt>bugpoint</tt> tool</h1></center>
<HR>

<h3>NAME</h3>
<tt>bugpoint</tt>

<h3>SYNOPSIS</h3>
<tt>bugpoint [options] [input LLVM ll/bc files] [LLVM passes] --args &lt;program arguments&gt;...</tt>

<img src="../Debugging.gif" width=444 height=314 align=right>
<h3>DESCRIPTION</h3>

The <tt>bugpoint</tt> tool 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 invalid native
code generation.  It aims to reduce large test cases to small, useful ones. 
For example,
if <tt><a href="gccas.html">gccas</a></tt> crashes while optimizing a file, it
will identify the optimization (or combination of optimizations) that causes the
crash, and reduce the file down to a small example which triggers the crash.<p>

<a name="designphilosophy">
<h4>Design Philosophy</h4>

<tt>bugpoint</tt> is designed to be a useful tool without requiring any
hooks into the LLVM infrastructure at all.  It works with any and all LLVM
passes and code generators, and does not need to "know" how they work.  Because
of this, it may appear to do a lot of stupid things or miss obvious
simplifications.  <tt>bugpoint</tt> is also designed to trade off programmer
time for computer time in the compiler-debugging process; consequently, it may
take a long period of (unattended) time to reduce a test case, but we feel it
is still worth it. :-) <p>

<a name="automaticdebuggerselection">
<h4>Automatic Debugger Selection</h4>

<tt>bugpoint</tt> reads each <tt>.bc</tt> or <tt>.ll</tt> file
specified on the command line and links them together into a single module,
called the test program.  If any LLVM passes are
specified on the command line, it runs these passes on the test program.  If
any of the passes crash, or if they produce malformed output,
<tt>bugpoint</tt> starts the <a href="#crashdebug">crash debugger</a>.<p>

Otherwise, if the <a href="#opt_output"><tt>-output</tt></a> option was not
specified, <tt>bugpoint</tt> runs the test program with the C backend (which
is assumed to generate good code) to generate a reference output.  Once
<tt>bugpoint</tt> has a reference output for the test program, it tries
executing it
with the <a href="#opt_run-">selected</a> code generator.  If
the resulting output differs from the reference output, it assumes the
difference resulted from a code generator failure, and starts the
<a href="#codegendebug">code generator debugger</a>.<p>

Otherwise, <tt>bugpoint</tt> runs the test program after all of the LLVM passes
have been applied to it.  If its output differs from the reference output,
it assumes the difference resulted from a failure in one of the LLVM passes,
and enters the
<a href="#miscompilationdebug">miscompilation debugger</a>. Otherwise,
there is no problem <tt>bugpoint</tt> can debug.<p>

<a name="crashdebug">
<h4>Crash debugger</h4>

If an optimizer crashes, <tt>bugpoint</tt> will try as hard as it can to
reduce the list of passes and the size of the test program.  First,
<tt>bugpoint</tt> figures out which combination of passes triggers the bug. This
is useful when debugging a problem exposed by <tt>gccas</tt>, for example,
because it runs over 25 optimizations.<p>

Next, <tt>bugpoint</tt> tries removing functions from the test program, to
reduce its
size.  Usually it is able to reduce a test program
to a single function, when debugging intraprocedural optimizations.  Once the
number of
functions has been reduced, it attempts to delete various edges in the control
flow graph, to reduce the size of the function as much as possible.  Finally,
<tt>bugpoint</tt> deletes any individual LLVM instructions whose absence does
not eliminate the failure.  At the end, <tt>bugpoint</tt> should tell you what
passes crash, give you a bytecode file, and give you instructions on how to
reproduce the failure with <tt><a href="opt.html">opt</a></tt> or
<tt><a href="analyze.html">analyze</a></tt>.<p>

<a name="codegendebug">
<h4>Code generator debugger</h4>

The code generator debugger attempts to narrow down the amount of code that is
being miscompiled by the <a href="#opt_run-">selected</a> code generator.  To do
this, it takes the test program and partitions it into two pieces: one piece
which it compiles with the C backend (into a shared object), and one piece which
it runs with either the JIT or the static LLC compiler.  It uses several
techniques to reduce the amount of code pushed through the LLVM code generator,
to reduce the potential scope of the problem.  After it is finished, it emits
two bytecode files (called "test" [to be compiled with the code generator] and
"safe" [to be compiled with the C backend] respectively), and instructions for
reproducing the problem.  The code generator debugger assumes that the C
backend produces good code.<p>

If you are using the code generator debugger and get an error message that
says "UNSUPPORTED: external function used as a global initializer!", try using
the <tt>-run-llc</tt> option instead of the <tt>-run-jit</tt> option.  This is
due to an unimplemented feature in the code generator debugger.<p>

<a name="miscompilationdebug">
<h4>Miscompilation debugger</h4>

The miscompilation debugger works similarly to the code generator
debugger.  It works by splitting the test program into two pieces, running the
optimizations specified on one piece, linking the two pieces back together,
and then executing the result.
It attempts to narrow down the list of passes to the one (or few) which are
causing the miscompilation, then reduce the portion of the test program which is
being miscompiled.  The miscompilation debugger assumes that the selected
code generator is working properly.<p>

<a name="bugpoint notes">
<h4>Advice for using <tt>bugpoint</tt></h4>

<tt>bugpoint</tt> can be a remarkably useful tool, but it sometimes works in
non-obvious ways.  Here are some hints and tips:<p>

<ol>
<li>In the code generator and miscompilation debuggers, <tt>bugpoint</tt> only
    works with programs that have deterministic output.  Thus, if the program
    outputs the date, time, or any other "random" data, <tt>bugpoint</tt> may
    misinterpret differences in these data, when output, as the result of a
    miscompilation.  Programs should be temporarily modified to disable
    outputs that are likely to vary from run to run.

<li>In the code generator and miscompilation debuggers, debugging will go
    faster if you manually modify the program or its inputs to reduce the
    runtime, but still exhibit the problem.

<li><tt>bugpoint</tt> is extremely useful when working on a new optimization:
    it helps track down regressions quickly.  To avoid having to relink
    <tt>bugpoint</tt> every time you change your optimization however, have
    <tt>bugpoint</tt> dynamically load your optimization with the <a
    href="#opt_load"><tt>-load</tt></a> option.

<li><tt>bugpoint</tt> can generate a lot of output and run for a long period of
    time.  It is often useful to capture the output of the program to file.  For
    example, in the C shell, you can type:<br>
    <tt>bugpoint  ..... |&amp; tee bugpoint.log</tt>
    <br>to get a copy of <tt>bugpoint</tt>'s output in the file
    <tt>bugpoint.log</tt>, as well as on your terminal.

<li><tt>bugpoint</tt> cannot debug problems with the linker. If
    <tt>bugpoint</tt> crashes before you see its "All input ok" message,
    you might try <tt>llvm-link -v</tt> on the same set of input files. If
    that also crashes, you may be experiencing a linker bug.
    
</ol>

<h3>OPTIONS</h3>

<ul>
	<li><tt>-additional-so &lt;library.so&gt;</tt><br>
    Load <tt>&lt;library.so&gt;</tt> 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.<p>

	<li><tt>-args &lt;program args&gt;</tt><br>
	Pass all arguments specified after <tt>-args</tt> to the
	test program whenever it runs.  Note that if any of
	the <tt>&lt;program args&gt;</tt> start with a '-', you should use:
        <p>
        <tt>bugpoint &lt;bugpoint args&gt; -args -- &lt;program args&gt;</tt>
        <p>
        The "<tt>--</tt>" right after the <tt>-args</tt> option tells
        <tt>bugpoint</tt> to consider any options starting with <tt>-</tt> to be
        part of the <tt>-args</tt> option, not as options to <tt>bugpoint</tt>
        itself.<p>

	<li><tt>-disable-{adce,dce,final-cleanup,simplifycfg}</tt><br>
    Do not run the specified passes to clean up and reduce the size of the
    test program. By default, <tt>bugpoint</tt> uses these passes internally
    when attempting to reduce test programs.  If you're trying to find
    a bug in one of these passes, <tt>bugpoint</tt> may crash.<p>

	<li> <tt>-help</tt><br>
	Print a summary of command line options.<p>

	<a name="opt_input"><li><tt>-input &lt;filename&gt;</tt><br>
	Open <tt>&lt;filename&gt;</tt> and redirect the standard input of the
    test program, whenever it runs, to come from that file.
	<p>

	<a name="opt_load"><li> <tt>-load &lt;plugin.so&gt;</tt><br>
	Load the dynamic object <tt>&lt;plugin.so&gt;</tt> into <tt>bugpoint</tt>
    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 -help and -load options together:
	<p>
	<tt>bugpoint -load &lt;plugin.so&gt; -help</tt>
	<p>

	<a name="opt_output"><li><tt>-output &lt;filename&gt;</tt><br>
    Whenever the test program produces output on its standard output
    stream, it should match the contents of <tt>&lt;filename&gt;</tt>
    (the "reference output"). If you do not use this option,
    <tt>bugpoint</tt> will attempt to generate a reference output by
    compiling the program with the C backend and running it.<p>

	<a name="opt_run-"><li><tt>-run-{int,jit,llc,cbe}</tt><br>
    Whenever the test program is compiled, <tt>bugpoint</tt> 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.<p>
</ul>

<h3>EXIT STATUS</h3>

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

<h3>SEE ALSO</h3>
<a href="opt.html"><tt>opt</tt></a>,
<a href="analyze.html"><tt>analyze</tt></a>

<HR>
Maintained by the <a href="http://llvm.cs.uiuc.edu">LLVM Team</a>.
</body>
</html>
