forked from OSchip/llvm-project
Convert from being a copy of the man page to a full-fledged document.
This doc keeps all the descriptive info from the man page, but not the options. llvm-svn: 18719
This commit is contained in:
parent
34f7c3d37a
commit
a078d57848
|
@ -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>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<title>LLVM bugpoint tool: design and usage</title>
|
||||||
<title>LLVM: bugpoint tool</title>
|
|
||||||
<link rel="stylesheet" href="llvm.css" type="text/css">
|
<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>
|
</head>
|
||||||
<html>
|
|
||||||
|
|
||||||
<body>
|
<div class="doc_title">
|
||||||
<center><h1>LLVM: <tt>bugpoint</tt> tool</h1></center>
|
LLVM bugpoint tool: design and usage
|
||||||
<HR>
|
</div>
|
||||||
|
|
||||||
<h3>NAME</h3>
|
<ul>
|
||||||
<tt>bugpoint</tt>
|
<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>
|
<div class="doc_author">
|
||||||
<tt>bugpoint [options] [input LLVM ll/bc files] [LLVM passes] --args <program arguments>...</tt>
|
<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
|
<div class="doc_text">
|
||||||
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>
|
|
||||||
|
|
||||||
<a name="designphilosophy">
|
<p><tt>bugpoint</tt> narrows down the source of problems in LLVM tools and
|
||||||
<h4>Design Philosophy</h4>
|
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
|
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
|
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
|
of this, it may appear to do stupid things or miss obvious
|
||||||
|
@ -44,47 +66,57 @@ 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
|
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
|
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
|
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">
|
</div>
|
||||||
<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,
|
<div class="doc_subsection">
|
||||||
called the test program. If any LLVM passes are
|
<a name="autoselect">Automatic Debugger Selection</a>
|
||||||
specified on the command line, it runs these passes on the test program. If
|
</div>
|
||||||
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>
|
|
||||||
|
|
||||||
Otherwise, if the <a href="#opt_output"><tt>-output</tt></a> option was not
|
<div class="doc_text">
|
||||||
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>
|
|
||||||
|
|
||||||
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
|
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
|
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
|
assumes the difference resulted from a failure in one of the LLVM passes, and
|
||||||
enters the <a href="#miscompilationdebug">miscompilation
|
enters the <a href="#miscompilationdebug">miscompilation debugger</a>.
|
||||||
debugger</a>. Otherwise, there is no problem <tt>bugpoint</tt> can debug.<p>
|
Otherwise, there is no problem <tt>bugpoint</tt> can debug.</p>
|
||||||
|
|
||||||
<a name="crashdebug">
|
</div>
|
||||||
<h4>Crash debugger</h4>
|
|
||||||
|
|
||||||
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
|
<div class="doc_subsection">
|
||||||
test program. First, <tt>bugpoint</tt> figures out which combination of
|
<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
|
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
|
reduce its size. Usually it is able to reduce a test program to a single
|
||||||
function, when debugging intraprocedural optimizations. Once the number of
|
function, when debugging intraprocedural optimizations. Once the number of
|
||||||
functions has been reduced, it attempts to delete various edges in the control
|
functions has been reduced, it attempts to delete various edges in the control
|
||||||
|
@ -92,38 +124,55 @@ 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
|
<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
|
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
|
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
|
reproduce the failure with <tt>opt</tt>, <tt>analyze</tt>, or <tt>llc</tt>.</p>
|
||||||
href="CommandGuide/html/analyze.html">analyze</a></tt>, or <tt><a href="CommandGuide/html/llc.html">llc</a></tt>.<p>
|
|
||||||
|
|
||||||
<a name="codegendebug">
|
</div>
|
||||||
<h4>Code generator debugger</h4>
|
|
||||||
|
<!-- ======================================================================= -->
|
||||||
|
<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
|
<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
|
is being miscompiled by the selected code generator. To do this, it takes the
|
||||||
do this, it takes the test program and partitions it into two pieces: one piece
|
test program and partitions it into two pieces: one piece which it compiles
|
||||||
which it compiles with the C backend (into a shared object), and one piece which
|
with the C backend (into a shared object), and one piece which it runs with
|
||||||
it runs with either the JIT or the static LLC compiler. It uses several
|
either the JIT or the static LLC compiler. It uses several techniques to
|
||||||
techniques to reduce the amount of code pushed through the LLVM code generator,
|
reduce the amount of code pushed through the LLVM code generator, to reduce the
|
||||||
to reduce the potential scope of the problem. After it is finished, it emits
|
potential scope of the problem. After it is finished, it emits two bytecode
|
||||||
two bytecode files (called "test" [to be compiled with the code generator] and
|
files (called "test" [to be compiled with the code generator] and "safe" [to be
|
||||||
"safe" [to be compiled with the C backend], respectively), and instructions for
|
compiled with the C backend], respectively), and instructions for reproducing
|
||||||
reproducing the problem. The code generator debugger assumes that the C backend
|
the problem. The code generator debugger assumes that the C backend produces
|
||||||
produces good code.</p>
|
good code.</p>
|
||||||
|
|
||||||
<a name="miscompilationdebug">
|
</div>
|
||||||
<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
|
<div class="doc_subsection">
|
||||||
optimizations specified on one piece, linking the two pieces back together,
|
<a name="miscompilationdebug">Miscompilation debugger</a>
|
||||||
and then executing the result.
|
</div>
|
||||||
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">
|
<div class="doc_text">
|
||||||
<h4>Advice for using <tt>bugpoint</tt></h4>
|
|
||||||
|
<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
|
<tt>bugpoint</tt> can be a remarkably useful tool, but it sometimes works in
|
||||||
non-obvious ways. Here are some hints and tips:<p>
|
non-obvious ways. Here are some hints and tips:<p>
|
||||||
|
@ -131,10 +180,10 @@ non-obvious ways. Here are some hints and tips:<p>
|
||||||
<ol>
|
<ol>
|
||||||
<li>In the code generator and miscompilation debuggers, <tt>bugpoint</tt> only
|
<li>In the code generator and miscompilation debuggers, <tt>bugpoint</tt> only
|
||||||
works with programs that have deterministic output. Thus, if the program
|
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
|
outputs <tt>argv[0]</tt>, the date, time, or any other "random" data,
|
||||||
misinterpret differences in these data, when output, as the result of a
|
<tt>bugpoint</tt> may misinterpret differences in these data, when output,
|
||||||
miscompilation. Programs should be temporarily modified to disable
|
as the result of a miscompilation. Programs should be temporarily modified
|
||||||
outputs that are likely to vary from run to run.
|
to disable outputs that are likely to vary from run to run.
|
||||||
|
|
||||||
<li>In the code generator and miscompilation debuggers, debugging will go
|
<li>In the code generator and miscompilation debuggers, debugging will go
|
||||||
faster if you manually modify the program or its inputs to reduce the
|
faster if you manually modify the program or its inputs to reduce the
|
||||||
|
@ -143,15 +192,19 @@ non-obvious ways. Here are some hints and tips:<p>
|
||||||
<li><tt>bugpoint</tt> is extremely useful when working on a new optimization:
|
<li><tt>bugpoint</tt> is extremely useful when working on a new optimization:
|
||||||
it helps track down regressions quickly. To avoid having to relink
|
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> every time you change your optimization however, have
|
||||||
<tt>bugpoint</tt> dynamically load your optimization with the <a
|
<tt>bugpoint</tt> dynamically load your optimization with the
|
||||||
href="#opt_load"><tt>-load</tt></a> option.
|
<tt>-load</tt> option.
|
||||||
|
|
||||||
<li><tt>bugpoint</tt> can generate a lot of output and run for a long period of
|
<li><p><tt>bugpoint</tt> can generate a lot of output and run for a long period
|
||||||
time. It is often useful to capture the output of the program to file. For
|
of time. It is often useful to capture the output of the program to file.
|
||||||
example, in the C shell, you can type:<br>
|
For example, in the C shell, you can run:</p>
|
||||||
<tt>bugpoint ..... |& tee bugpoint.log</tt>
|
|
||||||
<br>to get a copy of <tt>bugpoint</tt>'s output in the file
|
<div class="doc_code">
|
||||||
<tt>bugpoint.log</tt>, as well as on your terminal.
|
<p><tt>bugpoint ... |& 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
|
<li><tt>bugpoint</tt> cannot debug problems with the LLVM linker. If
|
||||||
<tt>bugpoint</tt> crashes before you see its "All input ok" message,
|
<tt>bugpoint</tt> crashes before you see its "All input ok" message,
|
||||||
|
@ -165,89 +218,21 @@ non-obvious ways. Here are some hints and tips:<p>
|
||||||
|
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<h3>OPTIONS</h3>
|
</div>
|
||||||
|
|
||||||
<ul>
|
<!-- *********************************************************************** -->
|
||||||
<li><tt>-additional-so <library></tt><br>
|
|
||||||
Load <tt><library></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 <program args></tt><br>
|
<hr>
|
||||||
Pass all arguments specified after <tt>-args</tt> to the
|
<address>
|
||||||
test program whenever it runs. Note that if any of
|
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img
|
||||||
the <tt><program args></tt> start with a '-', you should use:
|
src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a>
|
||||||
<p>
|
<a href="http://validator.w3.org/check/referer"><img
|
||||||
<tt>bugpoint <bugpoint args> -args -- <program args></tt>
|
src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"></a>
|
||||||
<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>-tool-args <tool args></tt><br>
|
<a href="mailto:sabre@nondot.org">Chris Lattner</a><br>
|
||||||
Pass all arguments specified after <tt>-tool-args</tt> to the
|
<a href="http://llvm.cs.uiuc.edu">LLVM Compiler Infrastructure</a><br>
|
||||||
LLVM tool under test (llc, lli, etc.) whenever it runs.
|
Last modified: $Date$
|
||||||
You should use this option in the following way:
|
</address>
|
||||||
<p>
|
|
||||||
<tt>bugpoint <bugpoint args> -tool-args -- <tool args></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>
|
|
||||||
|
|
||||||
<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 <filename></tt><br>
|
|
||||||
Open <tt><filename></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 <plugin></tt><br>
|
|
||||||
Load the dynamic object <tt><plugin></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 <plugin> -help</tt>
|
|
||||||
<p>
|
|
||||||
|
|
||||||
<a name="opt_output"><li><tt>-output <filename></tt><br>
|
|
||||||
Whenever the test program produces output on its standard output
|
|
||||||
stream, it should match the contents of <tt><filename></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 <filename></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>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Reference in New Issue