diff --git a/docs/Bugpoint.html b/docs/Bugpoint.html
index af6155e..81dce4f 100644
--- a/docs/Bugpoint.html
+++ b/docs/Bugpoint.html
@@ -1,41 +1,63 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
+                      "http://www.w3.org/TR/html4/strict.dtd">
 <html>
 <head>
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-  <title>LLVM: bugpoint tool</title>
+  <title>LLVM bugpoint tool: design and usage</title>
   <link rel="stylesheet" href="llvm.css" type="text/css">
-  <meta name="author" content="Chris Lattner">
-  <meta name="description" 
-  content="A tool for automatic test case reduction">
 </head>
-<html>
 
-<body>
-<center><h1>LLVM: <tt>bugpoint</tt> tool</h1></center>
-<HR>
+<div class="doc_title">
+  LLVM bugpoint tool: design and usage
+</div>
 
-<h3>NAME</h3>
-<tt>bugpoint</tt>
+<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>
 
-<h3>SYNOPSIS</h3>
-<tt>bugpoint [options] [input LLVM ll/bc files] [LLVM passes] --args &lt;program arguments&gt;...</tt>
+<div class="doc_author">
+<p>Written by <a href="mailto:sabre@nondot.org">Chris Lattner</a></p>
+</div>
 
-<img src="img/Debugging.gif" width=444 height=314 align=right>
-<h3>DESCRIPTION</h3>
+<!-- *********************************************************************** -->
+<div class="doc_section">
+<a name="desc">Description</a>
+</div>
+<!-- *********************************************************************** -->
 
-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 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><a href="CommandGuide/html/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>
+<div class="doc_text">
 
-<a name="designphilosophy">
-<h4>Design Philosophy</h4>
+<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>gccas</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>
 
-<tt>bugpoint</tt> is designed to be a useful tool without requiring any
+<p>For detailed case scenarios, such as debugging <tt>gccas</tt>,
+<tt>gccld</tt>, or one of the LLVM code generators, see <a
+href="HowToSubmitABug.html">How To Submit a Bug Report document</a>.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<div class="doc_section">
+<a name="design">Design Philosophy</a>
+</div>
+<!-- *********************************************************************** -->
+
+<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
@@ -44,47 +66,57 @@
 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>
+executing it) takes a long time.</p>
 
-<a name="automaticdebuggerselection">
-<h4>Automatic Debugger Selection</h4>
+</div>
 
-<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>
+<!-- ======================================================================= -->
+<div class="doc_subsection">
+  <a name="autoselect">Automatic Debugger Selection</a>
+</div>
 
-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
-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>
+<div class="doc_text">
 
-Finally, if the output of the selected code generator matches the reference
+<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>
+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>
+</div>
 
-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
+<!-- ======================================================================= -->
+<div class="doc_subsection">
+  <a name="crashdebug">Crash debugger</a>
+</div>
+
+<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>gccas</tt>, for example, because it runs over 38 passes.<p>
+exposed by <tt>gccas</tt>, for example, because it runs over 38 passes.</p>
 
-Next, <tt>bugpoint</tt> tries removing functions from the test program, to
+<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
@@ -92,38 +124,55 @@
 <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="CommandGuide/html/opt.html">opt</a></tt>, <tt><a
-href="CommandGuide/html/analyze.html">analyze</a></tt>, or <tt><a href="CommandGuide/html/llc.html">llc</a></tt>.<p>
+reproduce the failure with <tt>opt</tt>, <tt>analyze</tt>, or <tt>llc</tt>.</p>
 
-<a name="codegendebug">
-<h4>Code generator debugger</h4>
+</div>
+
+<!-- ======================================================================= -->
+<div class="doc_subsection">
+  <a name="codegendebug">Code generator debugger</a>
+</div>
+
+<div class="doc_text">
 
 <p>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>
+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 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>
 
-<a name="miscompilationdebug">
-<h4>Miscompilation debugger</h4>
+</div>
 
-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 class="doc_subsection">
+  <a name="miscompilationdebug">Miscompilation debugger</a>
+</div>
 
-<a name="bugpoint notes">
-<h4>Advice for using <tt>bugpoint</tt></h4>
+<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>
+
+<!-- *********************************************************************** -->
+<div class="doc_section">
+  <a name="advice">Advice for using bugpoint</a>
+</div>
+<!-- *********************************************************************** -->
+
+<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>
@@ -131,10 +180,10 @@
 <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.
+    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
@@ -143,15 +192,19 @@
 <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.
+    <tt>bugpoint</tt> dynamically load your optimization with the
+    <tt>-load</tt> 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><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,
@@ -165,89 +218,21 @@
     
 </ol>
 
-<h3>OPTIONS</h3>
+</div>
 
-<ul>
-	<li><tt>-additional-so &lt;library&gt;</tt><br>
-    Load <tt>&lt;library&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>
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"></a>
 
-	<li><tt>-tool-args &lt;tool args&gt;</tt><br>
-	Pass all arguments specified after <tt>-tool-args</tt> to the
-	LLVM tool under test (llc, lli, etc.) whenever it runs.
-	You should use this option in the following way:
-        <p>
-        <tt>bugpoint &lt;bugpoint args&gt; -tool-args -- &lt;tool args&gt;</tt>
-        <p>
-        The "<tt>--</tt>" right after the <tt>-tool-args</tt> option tells
-        <tt>bugpoint</tt> to consider any options starting with <tt>-</tt> to be
-        part of the <tt>-tool-args</tt> option, not as options to
-        <tt>bugpoint</tt> itself. (See <tt>-args</tt>, above.)<p>
+  <a href="mailto:sabre@nondot.org">Chris Lattner</a><br>
+  <a href="http://llvm.cs.uiuc.edu">LLVM Compiler Infrastructure</a><br>
+  Last modified: $Date$
+</address>
 
-	<li><tt>-check-exit-code={true,false}</tt><br>
-    Assume a non-zero exit code or core dump from the test program is
-    a failure. Defaults to true.<p>
-
-	<li><tt>-disable-{dce,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&gt;</tt><br>
-	Load the dynamic object <tt>&lt;plugin&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&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>
-
-	<li><tt>-profile-info-file &lt;filename&gt;</tt><br>
-    Profile file loaded by -profile-loader.<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.
-
-<HR>
-Maintained by the <a href="http://llvm.cs.uiuc.edu">LLVM Team</a>.
 </body>
 </html>
