<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
                      "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>LLVM bugpoint tool: design and usage</title>
  <link rel="stylesheet" href="llvm.css" type="text/css">
</head>

<h1>
  LLVM bugpoint tool: design and usage
</h1>

<ul>
  <li><a href="#desc">Description</a></li>
  <li><a href="#design">Design Philosophy</a>
  <ul>
    <li><a href="#autoselect">Automatic Debugger Selection</a></li>
    <li><a href="#crashdebug">Crash debugger</a></li>
    <li><a href="#codegendebug">Code generator debugger</a></li>
    <li><a href="#miscompilationdebug">Miscompilation debugger</a></li>
  </ul></li>
  <li><a href="#advice">Advice for using <tt>bugpoint</tt></a></li>
</ul>

<div class="doc_author">
<p>Written by <a href="mailto:sabre@nondot.org">Chris Lattner</a></p>
</div>

<!-- *********************************************************************** -->
<h2>
<a name="desc">Description</a>
</h2>
<!-- *********************************************************************** -->

<div class="doc_text">

<p><tt>bugpoint</tt> 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 example, if <tt>opt</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>

<p>For detailed case scenarios, such as debugging <tt>opt</tt>,
<tt>llvm-ld</tt>, or one of the LLVM code generators, see <a
href="HowToSubmitABug.html">How To Submit a Bug Report document</a>.</p>

</div>

<!-- *********************************************************************** -->
<h2>
<a name="design">Design Philosophy</a>
</h2>
<!-- *********************************************************************** -->

<div class="doc_text">

<p><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 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. Note that <tt>bugpoint</tt> is generally very quick unless
debugging a miscompilation where each test of the program (which requires 
executing it) takes a long time.</p>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="autoselect">Automatic Debugger Selection</a>
</h3>

<div class="doc_text">

<p><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 (which causes the verifier to abort), <tt>bugpoint</tt> starts
the <a href="#crashdebug">crash debugger</a>.</p>

<p>Otherwise, if the <tt>-output</tt> 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
selected code generator.  If the selected code generator crashes,
<tt>bugpoint</tt> starts the <a href="#crashdebug">crash debugger</a> on the
code generator.  Otherwise, 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>

<p>Finally, if the output of the selected code generator matches the reference
output, <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>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="crashdebug">Crash debugger</a>
</h3>

<div class="doc_text">

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

<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 bitcode file, and give you instructions on how to
reproduce the failure with <tt>opt</tt> or <tt>llc</tt>.</p>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="codegendebug">Code generator debugger</a>
</h3>

<div class="doc_text">

<p>The code generator debugger attempts to narrow down the amount of code that
is being miscompiled by the selected 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 bitcode
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>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="miscompilationdebug">Miscompilation debugger</a>
</h3>

<div class="doc_text">

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

</div>

<!-- *********************************************************************** -->
<h2>
  <a name="advice">Advice for using bugpoint</a>
</h2>
<!-- *********************************************************************** -->

<div class="doc_text">

<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 <tt>argv[0]</tt>, 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
    <tt>-load</tt> option.

<li><p><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 run:</p>

<div class="doc_code">
<p><tt>bugpoint  ... |&amp; tee bugpoint.log</tt></p>
</div>

    <p>to get a copy of <tt>bugpoint</tt>'s output in the file
    <tt>bugpoint.log</tt>, as well as on your terminal.</p>

<li><tt>bugpoint</tt> cannot debug problems with the LLVM 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.

<li><tt>bugpoint</tt> is useful for proactively finding bugs in LLVM. 
    Invoking <tt>bugpoint</tt> with the <tt>-find-bugs</tt> option will cause
    the list of specified optimizations to be randomized and applied to the 
    program. This process will repeat until a bug is found or the user
    kills <tt>bugpoint</tt>.

<li><p><tt>bugpoint</tt> does not understand the <tt>-O</tt> option
    that is used to specify optimization level to <tt>opt</tt>. You
    can use e.g.</p>

<div class="doc_code">
<p><tt>opt -O2 -debug-pass=Arguments foo.bc -disable-output</tt></p>
</div>

    <p>to get a list of passes that are used with <tt>-O2</tt> and
    then pass this list to <tt>bugpoint</tt>.</p>
    
</ol>

</div>

<!-- *********************************************************************** -->

<hr>
<address>
  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
  <a href="http://validator.w3.org/check/referer"><img
  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>

  <a href="mailto:sabre@nondot.org">Chris Lattner</a><br>
  <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
  Last modified: $Date$
</address>

</body>
</html>
