first pass of nomenclature changes in .html files

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37956 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Gabor Greif 2007-07-06 22:07:22 +00:00
parent 05c1dc6493
commit 04367bfc20
16 changed files with 141 additions and 141 deletions

View File

@ -123,7 +123,7 @@ 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, 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 bitcode file, and give you instructions on how to
reproduce the failure with <tt>opt</tt> or <tt>llc</tt>.</p> reproduce the failure with <tt>opt</tt> or <tt>llc</tt>.</p>
</div> </div>
@ -141,7 +141,7 @@ 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 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 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 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 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 files (called "test" [to be compiled with the code generator] and "safe" [to be
compiled with the C backend], respectively), and instructions for reproducing compiled with the C backend], respectively), and instructions for reproducing
the problem. The code generator debugger assumes that the C backend produces the problem. The code generator debugger assumes that the C backend produces

View File

@ -1357,7 +1357,7 @@ if that register is being used by the instruction. The method
<tt>MachineOperand::isDef()</tt> informs if that registers is being <tt>MachineOperand::isDef()</tt> informs if that registers is being
defined.</p> defined.</p>
<p>We will call physical registers present in the LLVM bytecode before <p>We will call physical registers present in the LLVM bitcode before
register allocation <i>pre-colored registers</i>. Pre-colored register allocation <i>pre-colored registers</i>. Pre-colored
registers are used in many different situations, for instance, to pass registers are used in many different situations, for instance, to pass
parameters of functions calls, and to store results of particular parameters of functions calls, and to store results of particular

View File

@ -199,7 +199,7 @@
</ul></td> </ul></td>
<td class="td_left"><ul> <td class="td_left"><ul>
<li>LLVM Assembly</li> <li>LLVM Assembly</li>
<li>LLVM Bytecode</li> <li>LLVM Bitcode</li>
<li>LLVM C++ IR</li> <li>LLVM C++ IR</li>
</ul></td> </ul></td>
<td class="td_left"><dl> <td class="td_left"><dl>
@ -215,10 +215,10 @@
<td><b>Optimization</b></td> <td><b>Optimization</b></td>
<td class="td_left"><ul> <td class="td_left"><ul>
<li>LLVM Assembly</li> <li>LLVM Assembly</li>
<li>LLVM Bytecode</li> <li>LLVM Bitcode</li>
</ul></td> </ul></td>
<td class="td_left"><ul> <td class="td_left"><ul>
<li>LLVM Bytecode</li> <li>LLVM Bitcode</li>
</ul></td> </ul></td>
<td class="td_left"><dl> <td class="td_left"><dl>
<dt><tt>-Ox</tt> <dt><tt>-Ox</tt>
@ -229,13 +229,13 @@
<tr> <tr>
<td><b>Linking</b></td> <td><b>Linking</b></td>
<td class="td_left"><ul> <td class="td_left"><ul>
<li>LLVM Bytecode</li> <li>LLVM Bitcode</li>
<li>Native Object Code</li> <li>Native Object Code</li>
<li>LLVM Library</li> <li>LLVM Library</li>
<li>Native Library</li> <li>Native Library</li>
</ul></td> </ul></td>
<td class="td_left"><ul> <td class="td_left"><ul>
<li>LLVM Bytecode Executable</li> <li>LLVM Bitcode Executable</li>
<li>Native Executable</li> <li>Native Executable</li>
</ul></td> </ul></td>
<td class="td_left"><dl> <td class="td_left"><dl>
@ -291,7 +291,7 @@ should be invoked. Users may but are not advised to alter the compiler's
available command line options for those programs regardless of whether they available command line options for those programs regardless of whether they
were written for LLVM or not. Furthermore, not all compiler tools will were written for LLVM or not. Furthermore, not all compiler tools will
have the same capabilities. Some compiler tools will simply generate LLVM assembly have the same capabilities. Some compiler tools will simply generate LLVM assembly
code, others will be able to generate fully optimized byte code. In general, code, others will be able to generate fully optimized bitcode. In general,
<tt>llvmc</tt> doesn't make any assumptions about the capabilities or command <tt>llvmc</tt> doesn't make any assumptions about the capabilities or command
line options of a sub-tool. It simply uses the details found in the line options of a sub-tool. It simply uses the details found in the
configuration files and leaves it to the compiler writer to specify the configuration files and leaves it to the compiler writer to specify the
@ -299,9 +299,9 @@ configuration correctly.</p>
<p>This approach means that new compiler tools can be up and working very <p>This approach means that new compiler tools can be up and working very
quickly. As a first cut, a tool can simply compile its source to raw quickly. As a first cut, a tool can simply compile its source to raw
(unoptimized) bytecode or LLVM assembly and <tt>llvmc</tt> can be configured (unoptimized) bitcode or LLVM assembly and <tt>llvmc</tt> can be configured
to pick up the slack (translate LLVM assembly to bytecode, optimize the to pick up the slack (translate LLVM assembly to bitcode, optimize the
bytecode, generate native assembly, link, etc.). In fact, the compiler tools bitcode, generate native assembly, link, etc.). In fact, the compiler tools
need not use any LLVM libraries, and it could be written in any language need not use any LLVM libraries, and it could be written in any language
(instead of C++). The configuration data will allow the full range of (instead of C++). The configuration data will allow the full range of
optimization, assembly, and linking capabilities that LLVM provides to be added optimization, assembly, and linking capabilities that LLVM provides to be added
@ -309,7 +309,7 @@ to these kinds of tools. Enabling the rapid development of front-ends is one
of the primary goals of <tt>llvmc</tt>.</p> of the primary goals of <tt>llvmc</tt>.</p>
<p>As a compiler tool matures, it may utilize the LLVM libraries and tools <p>As a compiler tool matures, it may utilize the LLVM libraries and tools
to more efficiently produce optimized bytecode directly in a single compilation to more efficiently produce optimized bitcode directly in a single compilation
and optimization program. In these cases, multiple tools would not be needed and optimization program. In these cases, multiple tools would not be needed
and the configuration data for the compiler would change.</p> and the configuration data for the compiler would change.</p>
@ -532,10 +532,10 @@ optimization.</p>
</tr> </tr>
<tr> <tr>
<td><b>translator.output</b></td> <td><b>translator.output</b></td>
<td><tt>bytecode</tt> or <tt>assembly</tt></td> <td><tt>bitcode</tt> or <tt>assembly</tt></td>
<td class="td_left">This item specifies the kind of output the language's <td class="td_left">This item specifies the kind of output the language's
translator generates.</td> translator generates.</td>
<td><tt>bytecode</tt></td> <td><tt>bitcode</tt></td>
</tr> </tr>
<tr> <tr>
<td><b>translator.preprocesses</b></td> <td><b>translator.preprocesses</b></td>
@ -556,10 +556,10 @@ optimization.</p>
</tr> </tr>
<tr> <tr>
<td><b>optimizer.output</b></td> <td><b>optimizer.output</b></td>
<td><tt>bytecode</tt> or <tt>assembly</tt></td> <td><tt>bitcode</tt> or <tt>assembly</tt></td>
<td class="td_left">This item specifies the kind of output the language's <td class="td_left">This item specifies the kind of output the language's
optimizer generates. Valid values are "assembly" and "bytecode"</td> optimizer generates. Valid values are "assembly" and "bitcode"</td>
<td><tt>bytecode</tt></td> <td><tt>bitcode</tt></td>
</tr> </tr>
<tr> <tr>
<td><b>optimizer.preprocesses</b></td> <td><b>optimizer.preprocesses</b></td>
@ -724,7 +724,7 @@ optimization.</p>
translator.required=true translator.required=true
# stkrc doesn't handle the -On options # stkrc doesn't handle the -On options
translator.output=bytecode translator.output=bitcode
########################################################## ##########################################################
# Optimizer definitions # Optimizer definitions
@ -742,7 +742,7 @@ optimization.</p>
# opt doesn't preprocess # opt doesn't preprocess
optimizer.preprocesses=no optimizer.preprocesses=no
# opt produces bytecode # opt produces bitcode
optimizer.output = bc optimizer.output = bc
########################################################## ##########################################################
@ -761,7 +761,7 @@ optimization.</p>
defined below.</p> defined below.</p>
<dl> <dl>
<dt><a name="def_assembly"><b>assembly</b></a></dt> <dt><a name="def_assembly"><b>assembly</b></a></dt>
<dd>A compilation <a href="#def_phase">phase</a> in which LLVM bytecode or <dd>A compilation <a href="#def_phase">phase</a> in which LLVM bitcode or
LLVM assembly code is assembled to a native code format (either target LLVM assembly code is assembled to a native code format (either target
specific aseembly language or the platform's native object file format). specific aseembly language or the platform's native object file format).
</dd> </dd>
@ -774,12 +774,12 @@ optimization.</p>
<dd>Refers to <tt>llvmc</tt> itself.</dd> <dd>Refers to <tt>llvmc</tt> itself.</dd>
<dt><a name="def_linking"><b>linking</b></a></dt> <dt><a name="def_linking"><b>linking</b></a></dt>
<dd>A compilation <a href="#def_phase">phase</a> in which LLVM bytecode files <dd>A compilation <a href="#def_phase">phase</a> in which LLVM bitcode files
and (optionally) native system libraries are combined to form a complete and (optionally) native system libraries are combined to form a complete
executable program.</dd> executable program.</dd>
<dt><a name="def_optimization"><b>optimization</b></a></dt> <dt><a name="def_optimization"><b>optimization</b></a></dt>
<dd>A compilation <a href="#def_phase">phase</a> in which LLVM bytecode is <dd>A compilation <a href="#def_phase">phase</a> in which LLVM bitcode is
optimized.</dd> optimized.</dd>
<dt><a name="def_phase"><b>phase</b></a></dt> <dt><a name="def_phase"><b>phase</b></a></dt>
@ -804,7 +804,7 @@ optimization.</p>
<dt><a name="def_translation"><b>translation</b></a></dt> <dt><a name="def_translation"><b>translation</b></a></dt>
<dd>A compilation <a href="#def_phase">phase</a> in which <dd>A compilation <a href="#def_phase">phase</a> in which
<a href="#def_sourcelanguage">source language</a> code is translated into <a href="#def_sourcelanguage">source language</a> code is translated into
either LLVM assembly language or LLVM bytecode.</dd> either LLVM assembly language or LLVM bitcode.</dd>
</dl> </dl>
</div> </div>
<!-- *********************************************************************** --> <!-- *********************************************************************** -->

View File

@ -228,7 +228,7 @@ complicated behavior in a single node (rotate).</p>
<div class="doc_text"> <div class="doc_text">
<p><span class="doc_warning">WARNING: adding instructions changes the bytecode <p><span class="doc_warning">WARNING: adding instructions changes the bitcode
format, and it will take some effort to maintain compatibility with format, and it will take some effort to maintain compatibility with
the previous version.</span> Only add an instruction if it is absolutely the previous version.</span> Only add an instruction if it is absolutely
necessary.</p> necessary.</p>
@ -251,8 +251,8 @@ necessary.</p>
add the grammar on how your instruction can be read and what it will add the grammar on how your instruction can be read and what it will
construct as a result</li> construct as a result</li>
<li><tt>llvm/lib/Bytecode/Reader/Reader.cpp</tt>: <li><tt>llvm/lib/Bitcode/Reader/Reader.cpp</tt>:
add a case for your instruction and how it will be parsed from bytecode</li> add a case for your instruction and how it will be parsed from bitcode</li>
<li><tt>llvm/lib/VMCore/Instruction.cpp</tt>: <li><tt>llvm/lib/VMCore/Instruction.cpp</tt>:
add a case for how your instruction will be printed out to assembly</li> add a case for how your instruction will be printed out to assembly</li>
@ -285,7 +285,7 @@ to understand this new instruction.</p>
<div class="doc_text"> <div class="doc_text">
<p><span class="doc_warning">WARNING: adding new types changes the bytecode <p><span class="doc_warning">WARNING: adding new types changes the bitcode
format, and will break compatibility with currently-existing LLVM format, and will break compatibility with currently-existing LLVM
installations.</span> Only add new types if it is absolutely necessary.</p> installations.</span> Only add new types if it is absolutely necessary.</p>
@ -348,12 +348,12 @@ bool TypesEqual(const Type *Ty, const Type *Ty2,
<li><tt>llvm/lib/AsmReader/Lexer.l</tt>: <li><tt>llvm/lib/AsmReader/Lexer.l</tt>:
add ability to parse in the type from text assembly</li> add ability to parse in the type from text assembly</li>
<li><tt>llvm/lib/ByteCode/Writer/Writer.cpp</tt>: <li><tt>llvm/lib/BitCode/Writer/Writer.cpp</tt>:
modify <tt>void BytecodeWriter::outputType(const Type *T)</tt> to serialize modify <tt>void BitcodeWriter::outputType(const Type *T)</tt> to serialize
your type</li> your type</li>
<li><tt>llvm/lib/ByteCode/Reader/Reader.cpp</tt>: <li><tt>llvm/lib/BitCode/Reader/Reader.cpp</tt>:
modify <tt>const Type *BytecodeReader::ParseType()</tt> to read your data modify <tt>const Type *BitcodeReader::ParseType()</tt> to read your data
type</li> type</li>
<li><tt>llvm/lib/VMCore/AsmWriter.cpp</tt>: <li><tt>llvm/lib/VMCore/AsmWriter.cpp</tt>:

View File

@ -584,7 +584,7 @@ relatively slow.
<p>Also note: this specific sequence of commands won't work if you use a <p>Also note: this specific sequence of commands won't work if you use a
function defined in the C++ runtime library (or any other C++ library). To function defined in the C++ runtime library (or any other C++ library). To
access an external C++ library, you must manually access an external C++ library, you must manually
compile libstdc++ to LLVM bytecode, statically link it into your program, then compile libstdc++ to LLVM bitcode, statically link it into your program, then
use the commands above to convert the whole result into C code. Alternatively, use the commands above to convert the whole result into C code. Alternatively,
you can compile the libraries and your application into two different chunks you can compile the libraries and your application into two different chunks
of C code and link them.</p> of C code and link them.</p>

View File

@ -82,14 +82,14 @@ basic information.</p>
<p>First, LLVM comes in two pieces. The first piece is the LLVM suite. This <p>First, LLVM comes in two pieces. The first piece is the LLVM suite. This
contains all of the tools, libraries, and header files needed to use the low contains all of the tools, libraries, and header files needed to use the low
level virtual machine. It contains an assembler, disassembler, bytecode level virtual machine. It contains an assembler, disassembler, bitcode
analyzer and bytecode optimizer. It also contains a test suite that can be analyzer and bitcode optimizer. It also contains a test suite that can be
used to test the LLVM tools and the GCC front end.</p> used to test the LLVM tools and the GCC front end.</p>
<p>The second piece is the GCC front end. This component provides a version of <p>The second piece is the GCC front end. This component provides a version of
GCC that compiles C and C++ code into LLVM bytecode. Currently, the GCC front GCC that compiles C and C++ code into LLVM bitcode. Currently, the GCC front
end uses the GCC parser to convert code to LLVM. Once end uses the GCC parser to convert code to LLVM. Once
compiled into LLVM bytecode, a program can be manipulated with the LLVM tools compiled into LLVM bitcode, a program can be manipulated with the LLVM tools
from the LLVM suite.</p> from the LLVM suite.</p>
<p> <p>
@ -332,7 +332,7 @@ build requires considerably less space.</p>
<p>The LLVM suite <i>may</i> compile on other platforms, but it is not <p>The LLVM suite <i>may</i> compile on other platforms, but it is not
guaranteed to do so. If compilation is successful, the LLVM utilities should be guaranteed to do so. If compilation is successful, the LLVM utilities should be
able to assemble, disassemble, analyze, and optimize LLVM bytecode. Code able to assemble, disassemble, analyze, and optimize LLVM bitcode. Code
generation should work as well, although the generated native code may not work generation should work as well, although the generated native code may not work
on your platform.</p> on your platform.</p>
@ -629,11 +629,11 @@ In order to compile and use LLVM, you may need to set some environment
variables. variables.
<dl> <dl>
<dt><tt>LLVM_LIB_SEARCH_PATH</tt>=<tt>/path/to/your/bytecode/libs</tt></dt> <dt><tt>LLVM_LIB_SEARCH_PATH</tt>=<tt>/path/to/your/bitcode/libs</tt></dt>
<dd>[Optional] This environment variable helps LLVM linking tools find the <dd>[Optional] This environment variable helps LLVM linking tools find the
locations of your bytecode libraries. It is provided only as a locations of your bitcode libraries. It is provided only as a
convenience since you can specify the paths using the -L options of the convenience since you can specify the paths using the -L options of the
tools and the C/C++ front-end will automatically use the bytecode files tools and the C/C++ front-end will automatically use the bitcode files
installed in its installed in its
<tt>lib</tt> directory.</dd> <tt>lib</tt> directory.</dd>
</dl> </dl>
@ -974,8 +974,8 @@ source code:</p>
<dt><tt>gmake -C runtime install-bytecode</tt> <dt><tt>gmake -C runtime install-bytecode</tt>
<dd> <dd>
Assuming you built LLVM into $OBJDIR, when this command is run, it will Assuming you built LLVM into $OBJDIR, when this command is run, it will
install bytecode libraries into the GCC front end's bytecode library install bitcode libraries into the GCC front end's bitcode library
directory. If you need to update your bytecode libraries, directory. If you need to update your bitcode libraries,
this is the target to use once you've built them. this is the target to use once you've built them.
<br><br> <br><br>
</dl> </dl>
@ -1138,7 +1138,7 @@ If you're running on a Linux system that supports the "<a
href="http://www.tat.physik.uni-tuebingen.de/~rguenth/linux/binfmt_misc.html"> href="http://www.tat.physik.uni-tuebingen.de/~rguenth/linux/binfmt_misc.html">
binfmt_misc</a>" binfmt_misc</a>"
module, and you have root access on the system, you can set your system up to module, and you have root access on the system, you can set your system up to
execute LLVM bytecode files directly. To do this, use commands like this (the execute LLVM bitcode files directly. To do this, use commands like this (the
first command may not be required if you are already using the module):</p> first command may not be required if you are already using the module):</p>
<div class="doc_code"> <div class="doc_code">
@ -1151,7 +1151,7 @@ first command may not be required if you are already using the module):</p>
</div> </div>
<p> <p>
This allows you to execute LLVM bytecode files directly. Thanks to Jack This allows you to execute LLVM bitcode files directly. Thanks to Jack
Cummings for pointing this out! Cummings for pointing this out!
</p> </p>
@ -1225,8 +1225,8 @@ different <a href="#tools">tools</a>.</p>
<dd>This directory holds the source code for the LLVM assembly language parser <dd>This directory holds the source code for the LLVM assembly language parser
library.</dd> library.</dd>
<dt><tt><b>llvm/lib/ByteCode/</b></tt></dt> <dt><tt><b>llvm/lib/BitCode/</b></tt></dt>
<dd>This directory holds code for reading and write LLVM bytecode.</dd> <dd>This directory holds code for reading and write LLVM bitcode.</dd>
<dt><tt><b>llvm/lib/Analysis/</b></tt><dd>This directory contains a variety of <dt><tt><b>llvm/lib/Analysis/</b></tt><dd>This directory contains a variety of
different program analyses, such as Dominator Information, Call Graphs, different program analyses, such as Dominator Information, Call Graphs,
@ -1255,7 +1255,7 @@ different <a href="#tools">tools</a>.</p>
source code locations at which the program is executing.</dd> source code locations at which the program is executing.</dd>
<dt><tt><b>llvm/lib/ExecutionEngine/</b></tt></dt> <dt><tt><b>llvm/lib/ExecutionEngine/</b></tt></dt>
<dd> This directory contains libraries for executing LLVM bytecode directly <dd> This directory contains libraries for executing LLVM bitcode directly
at runtime in both interpreted and JIT compiled fashions.</dd> at runtime in both interpreted and JIT compiled fashions.</dd>
<dt><tt><b>llvm/lib/Support/</b></tt></dt> <dt><tt><b>llvm/lib/Support/</b></tt></dt>
@ -1283,7 +1283,7 @@ different <a href="#tools">tools</a>.</p>
<div class="doc_subsection"><a name="runtime"><tt>llvm/runtime</tt></a></div> <div class="doc_subsection"><a name="runtime"><tt>llvm/runtime</tt></a></div>
<div class="doc_text"> <div class="doc_text">
<p>This directory contains libraries which are compiled into LLVM bytecode and <p>This directory contains libraries which are compiled into LLVM bitcode and
used when linking programs with the GCC front end. Most of these libraries are used when linking programs with the GCC front end. Most of these libraries are
skeleton versions of real libraries; for example, libc is a stripped down skeleton versions of real libraries; for example, libc is a stripped down
version of glibc.</p> version of glibc.</p>
@ -1342,22 +1342,22 @@ information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
be configured to utilize both LLVM and non-LLVM compilation tools to enable be configured to utilize both LLVM and non-LLVM compilation tools to enable
pre-processing, translation, optimization, assembly, and linking of programs pre-processing, translation, optimization, assembly, and linking of programs
all from one command line. <tt>llvmc</tt> also takes care of processing the all from one command line. <tt>llvmc</tt> also takes care of processing the
dependent libraries found in bytecode. This reduces the need to get the dependent libraries found in bitcode. This reduces the need to get the
traditional <tt>-l&lt;name&gt;</tt> options right on the command line. Please traditional <tt>-l&lt;name&gt;</tt> options right on the command line. Please
note that this tool, while functional, is still experimental and not feature note that this tool, while functional, is still experimental and not feature
complete.</dd> complete.</dd>
<dt><tt><b>llvm-ar</b></tt></dt> <dt><tt><b>llvm-ar</b></tt></dt>
<dd>The archiver produces an archive containing <dd>The archiver produces an archive containing
the given LLVM bytecode files, optionally with an index for faster the given LLVM bitcode files, optionally with an index for faster
lookup.</dd> lookup.</dd>
<dt><tt><b>llvm-as</b></tt></dt> <dt><tt><b>llvm-as</b></tt></dt>
<dd>The assembler transforms the human readable LLVM assembly to LLVM <dd>The assembler transforms the human readable LLVM assembly to LLVM
bytecode.</dd> bitcode.</dd>
<dt><tt><b>llvm-dis</b></tt></dt> <dt><tt><b>llvm-dis</b></tt></dt>
<dd>The disassembler transforms the LLVM bytecode to human readable <dd>The disassembler transforms the LLVM bitcode to human readable
LLVM assembly.</dd> LLVM assembly.</dd>
<dt><tt><b>llvm-ld</b></tt></dt> <dt><tt><b>llvm-ld</b></tt></dt>
@ -1372,7 +1372,7 @@ information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
<dt><tt><b>lli</b></tt></dt> <dt><tt><b>lli</b></tt></dt>
<dd><tt>lli</tt> is the LLVM interpreter, which <dd><tt>lli</tt> is the LLVM interpreter, which
can directly execute LLVM bytecode (although very slowly...). In addition can directly execute LLVM bitcode (although very slowly...). In addition
to a simple interpreter, <tt>lli</tt> also has a tracing mode (entered by to a simple interpreter, <tt>lli</tt> also has a tracing mode (entered by
specifying <tt>-trace</tt> on the command line). Finally, for specifying <tt>-trace</tt> on the command line). Finally, for
architectures that support it (currently x86, Sparc, and PowerPC), by default, architectures that support it (currently x86, Sparc, and PowerPC), by default,
@ -1382,25 +1382,25 @@ information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
<dt><tt><b>llc</b></tt></dt> <dt><tt><b>llc</b></tt></dt>
<dd> <tt>llc</tt> is the LLVM backend compiler, which <dd> <tt>llc</tt> is the LLVM backend compiler, which
translates LLVM bytecode to a native code assembly file or to C code (with translates LLVM bitcode to a native code assembly file or to C code (with
the -march=c option).</dd> the -march=c option).</dd>
<dt><tt><b>llvm-gcc</b></tt></dt> <dt><tt><b>llvm-gcc</b></tt></dt>
<dd><tt>llvm-gcc</tt> is a GCC-based C frontend that has been retargeted to <dd><tt>llvm-gcc</tt> is a GCC-based C frontend that has been retargeted to
use LLVM as its backend instead of GCC's RTL backend. It can also emit LLVM use LLVM as its backend instead of GCC's RTL backend. It can also emit LLVM
byte code or assembly (with the <tt>-emit-llvm</tt> option) instead of the bitcode or assembly (with the <tt>-emit-llvm</tt> option) instead of the
usual machine code output. It works just like any other GCC compiler, usual machine code output. It works just like any other GCC compiler,
taking the typical <tt>-c, -S, -E, -o</tt> options that are typically used. taking the typical <tt>-c, -S, -E, -o</tt> options that are typically used.
Additionally, the the source code for <tt>llvm-gcc</tt> is available as a Additionally, the the source code for <tt>llvm-gcc</tt> is available as a
separate Subversion module.</dd> separate Subversion module.</dd>
<dt><tt><b>opt</b></tt></dt> <dt><tt><b>opt</b></tt></dt>
<dd><tt>opt</tt> reads LLVM bytecode, applies a series of LLVM to LLVM <dd><tt>opt</tt> reads LLVM bitcode, applies a series of LLVM to LLVM
transformations (which are specified on the command line), and then outputs transformations (which are specified on the command line), and then outputs
the resultant bytecode. The '<tt>opt --help</tt>' command is a good way to the resultant bitcode. The '<tt>opt --help</tt>' command is a good way to
get a list of the program transformations available in LLVM.<br/> get a list of the program transformations available in LLVM.<br/>
<dd><tt>opt</tt> can also be used to run a specific analysis on an input <dd><tt>opt</tt> can also be used to run a specific analysis on an input
LLVM bytecode file and print out the results. It is primarily useful for LLVM bitcode file and print out the results. It is primarily useful for
debugging analyses, or familiarizing yourself with what an analysis does.</dd> debugging analyses, or familiarizing yourself with what an analysis does.</dd>
</dl> </dl>
</div> </div>
@ -1490,9 +1490,9 @@ so we only include instructiosn for llvm-gcc4.
<p><b>Note:</b> The <i>gcc4</i> frontend's invocation is <b><i>considerably different</i></b> <p><b>Note:</b> The <i>gcc4</i> frontend's invocation is <b><i>considerably different</i></b>
from the previous <i>gcc3</i> frontend. In particular, the <i>gcc4</i> frontend <b><i>does not</i></b> from the previous <i>gcc3</i> frontend. In particular, the <i>gcc4</i> frontend <b><i>does not</i></b>
create bytecode by default: <i>gcc4</i> produces native code. As the example below illustrates, create bitcode by default: <i>gcc4</i> produces native code. As the example below illustrates,
the '--emit-llvm' flag is needed to produce LLVM bytecode output. For <i>makefiles</i> and the '--emit-llvm' flag is needed to produce LLVM bitcode output. For <i>makefiles</i> and
<i>configure</i> scripts, the CFLAGS variable needs '--emit-llvm' to produce bytecode <i>configure</i> scripts, the CFLAGS variable needs '--emit-llvm' to produce bitcode
output.</p> output.</p>
</div> </div>
@ -1519,13 +1519,13 @@ output.</p>
-c arguments work as usual (producing a native .s or .o file, -c arguments work as usual (producing a native .s or .o file,
respectively). </p> respectively). </p>
<li><p>Next, compile the C file into a LLVM bytecode file:</p> <li><p>Next, compile the C file into a LLVM bitcode file:</p>
<p><tt>% llvm-gcc -O3 -emit-llvm hello.c -c -o hello.bc</tt></p> <p><tt>% llvm-gcc -O3 -emit-llvm hello.c -c -o hello.bc</tt></p>
<p>The -emit-llvm option can be used with the -S or -c options to emit an <p>The -emit-llvm option can be used with the -S or -c options to emit an
LLVM ".ll" or ".bc" file (respectively) for the code. This allows you LLVM ".ll" or ".bc" file (respectively) for the code. This allows you
to use the <a href="CommandGuide/index.html">standard LLVM tools</a> on to use the <a href="CommandGuide/index.html">standard LLVM tools</a> on
the bytecode file.</p> the bitcode file.</p>
<p>Unlike llvm-gcc3, llvm-gcc4 correctly responds to -O[0123] arguments. <p>Unlike llvm-gcc3, llvm-gcc4 correctly responds to -O[0123] arguments.
</p></li> </p></li>

View File

@ -57,7 +57,7 @@
<p>To emphasize, there is no C/C++ front end currently available. <p>To emphasize, there is no C/C++ front end currently available.
<tt>llvm-gcc</tt> is based on GCC, which cannot be bootstrapped using VC++. <tt>llvm-gcc</tt> is based on GCC, which cannot be bootstrapped using VC++.
Eventually there should be a <tt>llvm-gcc</tt> based on Cygwin or MinGW that Eventually there should be a <tt>llvm-gcc</tt> based on Cygwin or MinGW that
is usable. There is also the option of generating bytecode files on Unix and is usable. There is also the option of generating bitcode files on Unix and
copying them over to Windows. But be aware the odds of linking C++ code copying them over to Windows. But be aware the odds of linking C++ code
compiled with <tt>llvm-gcc</tt> with code compiled with VC++ is essentially compiled with <tt>llvm-gcc</tt> with code compiled with VC++ is essentially
zero.</p> zero.</p>
@ -257,11 +257,11 @@ All these paths are absolute:</p>
} }
</pre></li> </pre></li>
<li><p>Next, compile the C file into a LLVM bytecode file:</p> <li><p>Next, compile the C file into a LLVM bitcode file:</p>
<p><tt>% llvm-gcc -c hello.c -emit-llvm -o hello.bc</tt></p> <p><tt>% llvm-gcc -c hello.c -emit-llvm -o hello.bc</tt></p>
<p>This will create the result file <tt>hello.bc</tt> which is the LLVM <p>This will create the result file <tt>hello.bc</tt> which is the LLVM
bytecode that corresponds the the compiled program and the library bitcode that corresponds the the compiled program and the library
facilities that it required. You can execute this file directly using facilities that it required. You can execute this file directly using
<tt>lli</tt> tool, compile it to native assembly with the <tt>llc</tt>, <tt>lli</tt> tool, compile it to native assembly with the <tt>llc</tt>,
optimize or analyze it further with the <tt>opt</tt> tool, etc.</p> optimize or analyze it further with the <tt>opt</tt> tool, etc.</p>

View File

@ -242,7 +242,7 @@ JIT, or LLC) and optionally a series of LLVM passes to run. For example:</p>
</div> </div>
<p><tt>bugpoint</tt> will try to narrow down your list of passes to the one pass <p><tt>bugpoint</tt> will try to narrow down your list of passes to the one pass
that causes an error, and simplify the bytecode file as much as it can to assist that causes an error, and simplify the bitcode file as much as it can to assist
you. It will print a message letting you know how to reproduce the resulting you. It will print a message letting you know how to reproduce the resulting
error.</p> error.</p>
@ -268,7 +268,7 @@ Backend, and then link in the shared object it generates.</p>
<div class="doc_code"> <div class="doc_code">
<pre> <pre>
bugpoint -run-jit -output=[correct output file] [bytecode file] \ bugpoint -run-jit -output=[correct output file] [bitcode file] \
--tool-args -- [arguments to pass to lli] \ --tool-args -- [arguments to pass to lli] \
--args -- [program arguments] --args -- [program arguments]
</pre> </pre>
@ -278,7 +278,7 @@ bugpoint -run-jit -output=[correct output file] [bytecode file] \
<div class="doc_code"> <div class="doc_code">
<pre> <pre>
bugpoint -run-llc -output=[correct output file] [bytecode file] \ bugpoint -run-llc -output=[correct output file] [bitcode file] \
--tool-args -- [arguments to pass to llc] \ --tool-args -- [arguments to pass to llc] \
--args -- [program arguments] --args -- [program arguments]
</pre> </pre>
@ -297,7 +297,7 @@ make bugpoint-jit
</div> </div>
<p>At the end of a successful <tt>bugpoint</tt> run, you will be presented <p>At the end of a successful <tt>bugpoint</tt> run, you will be presented
with two bytecode files: a <em>safe</em> file which can be compiled with the C with two bitcode files: a <em>safe</em> file which can be compiled with the C
backend and the <em>test</em> file which either LLC or the JIT backend and the <em>test</em> file which either LLC or the JIT
mis-codegenerates, and thus causes the error.</p> mis-codegenerates, and thus causes the error.</p>
@ -306,7 +306,7 @@ the following:</p>
<ol> <ol>
<li><p>Regenerate the shared object from the safe bytecode file:</p> <li><p>Regenerate the shared object from the safe bitcode file:</p>
<div class="doc_code"> <div class="doc_code">
<p><tt> <p><tt>
@ -315,7 +315,7 @@ the following:</p>
</tt></p> </tt></p>
</div></li> </div></li>
<li><p>If debugging LLC, compile test bytecode native and link with the shared <li><p>If debugging LLC, compile test bitcode native and link with the shared
object:</p> object:</p>
<div class="doc_code"> <div class="doc_code">
@ -327,7 +327,7 @@ the following:</p>
</div></li> </div></li>
<li><p>If debugging the JIT, load the shared object and supply the test <li><p>If debugging the JIT, load the shared object and supply the test
bytecode:</p> bitcode:</p>
<div class="doc_code"> <div class="doc_code">
<p><tt><b>lli</b> -load=safe.so test.bc [program options]</tt></p> <p><tt><b>lli</b> -load=safe.so test.bc [program options]</tt></p>

View File

@ -226,7 +226,7 @@ strategy.</p>
<div class="doc_text"> <div class="doc_text">
<p>The LLVM code representation is designed to be used in three <p>The LLVM code representation is designed to be used in three
different forms: as an in-memory compiler IR, as an on-disk bytecode different forms: as an in-memory compiler IR, as an on-disk bitcode
representation (suitable for fast loading by a Just-In-Time compiler), representation (suitable for fast loading by a Just-In-Time compiler),
and as a human readable assembly language representation. This allows and as a human readable assembly language representation. This allows
LLVM to provide a powerful intermediate representation for efficient LLVM to provide a powerful intermediate representation for efficient
@ -268,7 +268,7 @@ following instruction is syntactically okay, but not well formed:</p>
its uses. The LLVM infrastructure provides a verification pass that may its uses. The LLVM infrastructure provides a verification pass that may
be used to verify that an LLVM module is well formed. This pass is be used to verify that an LLVM module is well formed. This pass is
automatically run by the parser after parsing input assembly and by automatically run by the parser after parsing input assembly and by
the optimizer before it outputs bytecode. The violations pointed out the optimizer before it outputs bitcode. The violations pointed out
by the verifier pass indicate bugs in transformation passes or input to by the verifier pass indicate bugs in transformation passes or input to
the parser.</p> the parser.</p>
</div> </div>
@ -3690,7 +3690,7 @@ argument.</p>
well known names and semantics and are required to follow certain restrictions. well known names and semantics and are required to follow certain restrictions.
Overall, these intrinsics represent an extension mechanism for the LLVM Overall, these intrinsics represent an extension mechanism for the LLVM
language that does not require changing all of the transformations in LLVM when language that does not require changing all of the transformations in LLVM when
adding to the language (or the bytecode reader/writer, the parser, etc...).</p> adding to the language (or the bitcode reader/writer, the parser, etc...).</p>
<p>Intrinsic function names must all start with an "<tt>llvm.</tt>" prefix. This <p>Intrinsic function names must all start with an "<tt>llvm.</tt>" prefix. This
prefix is reserved in LLVM for intrinsic names; thus, function names may not prefix is reserved in LLVM for intrinsic names; thus, function names may not

View File

@ -67,9 +67,9 @@ intermodular optimization, in the compiler tool chain. Its main goal is to let
the developer take advantage of intermodular optimizations without making any the developer take advantage of intermodular optimizations without making any
significant changes to the developer's makefiles or build system. This is significant changes to the developer's makefiles or build system. This is
achieved through tight integration with the linker. In this model, the linker achieved through tight integration with the linker. In this model, the linker
treates LLVM bytecode files like native object files and allows mixing and treates LLVM bitcode files like native object files and allows mixing and
matching among them. The linker uses <a href="#lto">LLVMlto</a>, a dynamically matching among them. The linker uses <a href="#lto">LLVMlto</a>, a dynamically
loaded library, to handle LLVM bytecode files. This tight integration between loaded library, to handle LLVM bitcode files. This tight integration between
the linker and LLVM optimizer helps to do optimizations that are not possible the linker and LLVM optimizer helps to do optimizations that are not possible
in other models. The linker input allows the optimizer to avoid relying on in other models. The linker input allows the optimizer to avoid relying on
conservative escape analysis. conservative escape analysis.
@ -87,7 +87,7 @@ conservative escape analysis.
supports LTO through the interface described in this document. Here, supports LTO through the interface described in this document. Here,
llvm-gcc4 transparently invokes system linker. </p> llvm-gcc4 transparently invokes system linker. </p>
<ul> <ul>
<li> Input source file <tt>a.c</tt> is compiled into LLVM byte code form. <li> Input source file <tt>a.c</tt> is compiled into LLVM bitcode form.
<li> Input source file <tt>main.c</tt> is compiled into native object code. <li> Input source file <tt>main.c</tt> is compiled into native object code.
</ul> </ul>
<div class="doc_code"><pre> <div class="doc_code"><pre>
@ -131,12 +131,12 @@ int main() {
} }
--- command lines --- --- command lines ---
$ llvm-gcc4 --emit-llvm -c a.c -o a.o # &lt;-- a.o is LLVM bytecode file $ llvm-gcc4 --emit-llvm -c a.c -o a.o # &lt;-- a.o is LLVM bitcode file
$ llvm-gcc4 -c main.c -o main.o # &lt;-- main.o is native object file $ llvm-gcc4 -c main.c -o main.o # &lt;-- main.o is native object file
$ llvm-gcc4 a.o main.o -o main # &lt;-- standard link command without any modifications $ llvm-gcc4 a.o main.o -o main # &lt;-- standard link command without any modifications
</pre></div> </pre></div>
<p>In this example, the linker recognizes that <tt>foo2()</tt> is an <p>In this example, the linker recognizes that <tt>foo2()</tt> is an
externally visible symbol defined in LLVM byte code file. This information externally visible symbol defined in LLVM bitcode file. This information
is collected using <a href="#readllvmobjectfile"> readLLVMObjectFile()</a>. is collected using <a href="#readllvmobjectfile"> readLLVMObjectFile()</a>.
Based on this information, the linker completes its usual symbol resolution Based on this information, the linker completes its usual symbol resolution
pass and finds that <tt>foo2()</tt> is not used anywhere. This information pass and finds that <tt>foo2()</tt> is not used anywhere. This information
@ -202,15 +202,15 @@ $ llvm-gcc4 a.o main.o -o main # &lt;-- standard link command without any modifi
<!-- ======================================================================= --> <!-- ======================================================================= -->
<div class="doc_subsection"> <div class="doc_subsection">
<a name="phase1">Phase 1 : Read LLVM Bytecode Files</a> <a name="phase1">Phase 1 : Read LLVM Bitcode Files</a>
</div> </div>
<div class="doc_text"> <div class="doc_text">
<p>The linker first reads all object files in natural order and collects <p>The linker first reads all object files in natural order and collects
symbol information. This includes native object files as well as LLVM byte symbol information. This includes native object files as well as LLVM bitcode
code files. In this phase, the linker uses files. In this phase, the linker uses
<a href="#readllvmobjectfile"> readLLVMObjectFile() </a> to collect symbol <a href="#readllvmobjectfile"> readLLVMObjectFile() </a> to collect symbol
information from each LLVM bytecode files and updates its internal global information from each LLVM bitcode files and updates its internal global
symbol table accordingly. The intent of this interface is to avoid overhead symbol table accordingly. The intent of this interface is to avoid overhead
in the non LLVM case, where all input object files are native object files, in the non LLVM case, where all input object files are native object files,
by putting this code in the error path of the linker. When the linker sees by putting this code in the error path of the linker. When the linker sees
@ -228,7 +228,7 @@ $ llvm-gcc4 a.o main.o -o main # &lt;-- standard link command without any modifi
<p>In this stage, the linker resolves symbols using global symbol table <p>In this stage, the linker resolves symbols using global symbol table
information to report undefined symbol errors, read archive members, resolve information to report undefined symbol errors, read archive members, resolve
weak symbols, etc. The linker is able to do this seamlessly even though it weak symbols, etc. The linker is able to do this seamlessly even though it
does not know the exact content of input LLVM bytecode files because it uses does not know the exact content of input LLVM bitcode files because it uses
symbol information provided by symbol information provided by
<a href="#readllvmobjectfile">readLLVMObjectFile()</a>. If dead code <a href="#readllvmobjectfile">readLLVMObjectFile()</a>. If dead code
stripping is enabled then the linker collects the list of live symbols. stripping is enabled then the linker collects the list of live symbols.
@ -237,12 +237,12 @@ $ llvm-gcc4 a.o main.o -o main # &lt;-- standard link command without any modifi
<!-- ======================================================================= --> <!-- ======================================================================= -->
<div class="doc_subsection"> <div class="doc_subsection">
<a name="phase3">Phase 3 : Optimize Bytecode Files</a> <a name="phase3">Phase 3 : Optimize Bitcode Files</a>
</div> </div>
<div class="doc_text"> <div class="doc_text">
<p>After symbol resolution, the linker updates symbol information supplied <p>After symbol resolution, the linker updates symbol information supplied
by LLVM bytecode files appropriately. For example, whether certain LLVM by LLVM bitcode files appropriately. For example, whether certain LLVM
bytecode supplied symbols are used or not. In the example above, the linker bitcode supplied symbols are used or not. In the example above, the linker
reports that <tt>foo2()</tt> is not used anywhere in the program, including reports that <tt>foo2()</tt> is not used anywhere in the program, including
native <tt>.o</tt> files. This information is used by the LLVM interprocedural native <tt>.o</tt> files. This information is used by the LLVM interprocedural
optimizer. The linker uses <a href="#optimizemodules">optimizeModules()</a> optimizer. The linker uses <a href="#optimizemodules">optimizeModules()</a>
@ -260,12 +260,12 @@ $ llvm-gcc4 a.o main.o -o main # &lt;-- standard link command without any modifi
<p>In this phase, the linker reads optimized a native object file and <p>In this phase, the linker reads optimized a native object file and
updates the internal global symbol table to reflect any changes. The linker updates the internal global symbol table to reflect any changes. The linker
also collects information about any changes in use of external symbols by also collects information about any changes in use of external symbols by
LLVM bytecode files. In the examle above, the linker notes that LLVM bitcode files. In the examle above, the linker notes that
<tt>foo4()</tt> is not used any more. If dead code stripping is enabled then <tt>foo4()</tt> is not used any more. If dead code stripping is enabled then
the linker refreshes the live symbol information appropriately and performs the linker refreshes the live symbol information appropriately and performs
dead code stripping.</p> dead code stripping.</p>
<p>After this phase, the linker continues linking as if it never saw LLVM <p>After this phase, the linker continues linking as if it never saw LLVM
bytecode files.</p> bitcode files.</p>
</div> </div>
<!-- *********************************************************************** --> <!-- *********************************************************************** -->
@ -288,10 +288,10 @@ $ llvm-gcc4 a.o main.o -o main # &lt;-- standard link command without any modifi
<div class="doc_text"> <div class="doc_text">
<p>The <tt>LLVMSymbol</tt> class is used to describe the externally visible <p>The <tt>LLVMSymbol</tt> class is used to describe the externally visible
functions and global variables, defined in LLVM bytecode files, to the linker. functions and global variables, defined in LLVM bitcode files, to the linker.
This includes symbol visibility information. This information is used by This includes symbol visibility information. This information is used by
the linker to do symbol resolution. For example: function <tt>foo2()</tt> is the linker to do symbol resolution. For example: function <tt>foo2()</tt> is
defined inside an LLVM bytecode module and it is an externally visible symbol. defined inside an LLVM bitcode module and it is an externally visible symbol.
This helps the linker connect the use of <tt>foo2()</tt> in native object This helps the linker connect the use of <tt>foo2()</tt> in native object
files with a future definition of the symbol <tt>foo2()</tt>. The linker files with a future definition of the symbol <tt>foo2()</tt>. The linker
will see the actual definition of <tt>foo2()</tt> when it receives the will see the actual definition of <tt>foo2()</tt> when it receives the
@ -310,12 +310,12 @@ $ llvm-gcc4 a.o main.o -o main # &lt;-- standard link command without any modifi
<div class="doc_text"> <div class="doc_text">
<p>The <tt>readLLVMObjectFile()</tt> function is used by the linker to read <p>The <tt>readLLVMObjectFile()</tt> function is used by the linker to read
LLVM bytecode files and collect LLVMSymbol information. This routine also LLVM bitcode files and collect LLVMSymbol information. This routine also
supplies a list of externally defined symbols that are used by LLVM bytecode supplies a list of externally defined symbols that are used by LLVM bitcode
files. The linker uses this symbol information to do symbol resolution. files. The linker uses this symbol information to do symbol resolution.
Internally, <a href="#lto">LLVMlto</a> maintains LLVM bytecode modules in Internally, <a href="#lto">LLVMlto</a> maintains LLVM bitcode modules in
memory. This function also provides a list of external references used by memory. This function also provides a list of external references used by
bytecode files.</p> bitcode files.</p>
</div> </div>
<!-- ======================================================================= --> <!-- ======================================================================= -->
@ -325,7 +325,7 @@ $ llvm-gcc4 a.o main.o -o main # &lt;-- standard link command without any modifi
<div class="doc_text"> <div class="doc_text">
<p>The linker invokes <tt>optimizeModules</tt> to optimize already read <p>The linker invokes <tt>optimizeModules</tt> to optimize already read
LLVM bytecode files by applying LLVM intermodular optimization techniques. LLVM bitcode files by applying LLVM intermodular optimization techniques.
This function runs the LLVM intermodular optimizer and generates native This function runs the LLVM intermodular optimizer and generates native
object code as <tt>.o</tt> files at the name and location provided by the object code as <tt>.o</tt> files at the name and location provided by the
linker.</p> linker.</p>
@ -338,7 +338,7 @@ $ llvm-gcc4 a.o main.o -o main # &lt;-- standard link command without any modifi
<div class="doc_text"> <div class="doc_text">
<p>The linker may use <tt>getTargetTriple()</tt> to query target architecture <p>The linker may use <tt>getTargetTriple()</tt> to query target architecture
while validating LLVM bytecode file.</p> while validating LLVM bitcode file.</p>
</div> </div>
<!-- ======================================================================= --> <!-- ======================================================================= -->
@ -347,7 +347,7 @@ $ llvm-gcc4 a.o main.o -o main # &lt;-- standard link command without any modifi
</div> </div>
<div class="doc_text"> <div class="doc_text">
<p>Internally, <a href="#lto">LLVMlto</a> maintains LLVM bytecode modules in <p>Internally, <a href="#lto">LLVMlto</a> maintains LLVM bitcode modules in
memory. The linker may use <tt>removeModule()</tt> method to remove desired memory. The linker may use <tt>removeModule()</tt> method to remove desired
modules from memory. </p> modules from memory. </p>
</div> </div>

View File

@ -30,7 +30,7 @@
<ol> <ol>
<li><a href="#libraries">Libraries</a> <li><a href="#libraries">Libraries</a>
<ol> <ol>
<li><a href="#BCModules">Bytecode Modules</a></li> <li><a href="#BCModules">Bitcode Modules</a></li>
<li><a href="#LoadableModules">Loadable Modules</a></li> <li><a href="#LoadableModules">Loadable Modules</a></li>
</ol> </ol>
</li> </li>
@ -260,11 +260,11 @@
</div> </div>
<!-- ======================================================================= --> <!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="BCModules">Bytecode Modules</a></div> <div class="doc_subsubsection"><a name="BCModules">Bitcode Modules</a></div>
<div class="doc_text"> <div class="doc_text">
<p>In some situations, it is desireable to build a single bytecode module from <p>In some situations, it is desireable to build a single bitcode module from
a variety of sources, instead of an archive, shared library, or bytecode a variety of sources, instead of an archive, shared library, or bitcode
library. Bytecode modules can be specified in addition to any of the other library. Bitcode modules can be specified in addition to any of the other
types of libraries by defining the <a href="#MODULE_NAME">MODULE_NAME</a> types of libraries by defining the <a href="#MODULE_NAME">MODULE_NAME</a>
variable. For example:</p> variable. For example:</p>
<pre><tt> <pre><tt>
@ -273,9 +273,9 @@
MODULE_NAME = mymod MODULE_NAME = mymod
</tt></pre> </tt></pre>
<p>will build a module named <tt>mymod.bc</tt> from the sources in the <p>will build a module named <tt>mymod.bc</tt> from the sources in the
directory. This module will be an aggregation of all the bytecode modules directory. This module will be an aggregation of all the bitcode modules
derived from the sources. The example will also build a bytecode archive derived from the sources. The example will also build a bitcode archive
containing a bytecode module for each compiled source file. The difference is containing a bitcode module for each compiled source file. The difference is
subtle, but important depending on how the module or library is to be linked. subtle, but important depending on how the module or library is to be linked.
</p> </p>
</div> </div>
@ -626,7 +626,7 @@
files. These sources will be built before any other target processing to files. These sources will be built before any other target processing to
ensure they are present.</dd> ensure they are present.</dd>
<dt><a name="BYTECODE_LIBRARY"><tt>BYTECODE_LIBRARY</tt></a></dt> <dt><a name="BYTECODE_LIBRARY"><tt>BYTECODE_LIBRARY</tt></a></dt>
<dd>If set to any value, causes a bytecode library (.bc) to be built.</dd> <dd>If set to any value, causes a bitcode library (.bc) to be built.</dd>
<dt><a name="CONFIG_FILES"><tt>CONFIG_FILES</tt></a></dt> <dt><a name="CONFIG_FILES"><tt>CONFIG_FILES</tt></a></dt>
<dd>Specifies a set of configuration files to be installed.</dd> <dd>Specifies a set of configuration files to be installed.</dd>
<dt><a name="DIRS"><tt>DIRS</tt></a></dt> <dt><a name="DIRS"><tt>DIRS</tt></a></dt>
@ -709,9 +709,9 @@
setting this variable without also setting <tt>SHARED_LIBRARY</tt> will have setting this variable without also setting <tt>SHARED_LIBRARY</tt> will have
no effect.</dd> no effect.</dd>
<dt><a name="MODULE_NAME"><tt>MODULE_NAME</tt></a></dt> <dt><a name="MODULE_NAME"><tt>MODULE_NAME</tt></a></dt>
<dd>Specifies the name of a bytecode module to be created. A bytecode <dd>Specifies the name of a bitcode module to be created. A bitcode
module can be specified in conjunction with other kinds of library builds module can be specified in conjunction with other kinds of library builds
or by itself. It constructs from the sources a single linked bytecode or by itself. It constructs from the sources a single linked bitcode
file.</dd> file.</dd>
<dt><a name="NO_INSTALL"><tt>NO_INSTALL</tt></a></dt> <dt><a name="NO_INSTALL"><tt>NO_INSTALL</tt></a></dt>
<dd>Specifies that the build products of the directory should not be <dd>Specifies that the build products of the directory should not be
@ -835,7 +835,7 @@
<dt><a name="LLVMGXX"><tt>LLVMGXX</tt></a><small>(defaulted)</small></dt> <dt><a name="LLVMGXX"><tt>LLVMGXX</tt></a><small>(defaulted)</small></dt>
<dd>Specifies the path to the LLVM version of the GCC C++ Compiler</dd> <dd>Specifies the path to the LLVM version of the GCC C++ Compiler</dd>
<dt><a name="LLVMLD"><tt>LLVMLD</tt></a><small>(defaulted)</small></dt> <dt><a name="LLVMLD"><tt>LLVMLD</tt></a><small>(defaulted)</small></dt>
<dd>Specifies the path to the LLVM bytecode linker tool</dd> <dd>Specifies the path to the LLVM bitcode linker tool</dd>
<dt><a name="LLVM_OBJ_ROOT"><tt>LLVM_OBJ_ROOT</tt></a><small>(configured) <dt><a name="LLVM_OBJ_ROOT"><tt>LLVM_OBJ_ROOT</tt></a><small>(configured)
</small></dt> </small></dt>
<dd>Specifies the top directory into which the output of the build is <dd>Specifies the top directory into which the output of the build is
@ -884,8 +884,8 @@
<dt><a name="BuildMode"><tt>BuildMode</tt></a></dt> <dt><a name="BuildMode"><tt>BuildMode</tt></a></dt>
<dd>The name of the type of build being performed: Debug, Release, or <dd>The name of the type of build being performed: Debug, Release, or
Profile</dd> Profile</dd>
<dt><a name="bytecode_libdir"><tt>bytecode_libdir</tt></a></dt> <dt><a name="bitcode_libdir"><tt>bytecode_libdir</tt></a></dt>
<dd>The directory into which bytecode libraries will ultimately be <dd>The directory into which bitcode libraries will ultimately be
installed. This value is derived from the <tt>--prefix</tt> option given to installed. This value is derived from the <tt>--prefix</tt> option given to
<tt>configure</tt>.</dd> <tt>configure</tt>.</dd>
<dt><a name="ConfigureScriptFLAGS"><tt>ConfigureScriptFLAGS</tt></a></dt> <dt><a name="ConfigureScriptFLAGS"><tt>ConfigureScriptFLAGS</tt></a></dt>
@ -965,7 +965,7 @@
CXX.Flags CXX.Flags
DependFiles DependFiles
DestArchiveLib DestArchiveLib
DestBytecodeLib DestBitcodeLib
DestModule DestModule
DestRelinkedLib DestRelinkedLib
DestSharedLib DestSharedLib

View File

@ -31,8 +31,8 @@
or program visualization purposes. Transform passes can use (or invalidate) or program visualization purposes. Transform passes can use (or invalidate)
the analysis passes. Transform passes all mutate the program in some way. the analysis passes. Transform passes all mutate the program in some way.
Utility passes provides ome utility but don't otherwise fit categorization. Utility passes provides ome utility but don't otherwise fit categorization.
For example passes to extract functions to bytecode or write a module to For example passes to extract functions to bitcode or write a module to
bytecode are neither analysis nor transform passes. bitcode are neither analysis nor transform passes.
<p>The table below provides a quick summary of each pass and links to the more <p>The table below provides a quick summary of each pass and links to the more
complete pass description later in the document.</p> complete pass description later in the document.</p>
</div> </div>
@ -143,7 +143,7 @@
<tr><th>Option</th><th>Name</th><th>Directory</th></tr> <tr><th>Option</th><th>Name</th><th>Directory</th></tr>
<tr><td><a href="#deadarghaX0r">-deadarghaX0r</a></td><td>Dead Argument Hacking (BUGPOINT ONLY)</td></tr> <tr><td><a href="#deadarghaX0r">-deadarghaX0r</a></td><td>Dead Argument Hacking (BUGPOINT ONLY)</td></tr>
<tr><td><a href="#extract-blocks">-extract-blocks</a></td><td>Extract Basic Blocks From Module (BUGPOINT ONLY)</td></tr> <tr><td><a href="#extract-blocks">-extract-blocks</a></td><td>Extract Basic Blocks From Module (BUGPOINT ONLY)</td></tr>
<tr><td><a href="#emitbytecode">-emitbytecode</a></td><td>Bytecode Writer</td></tr> <tr><td><a href="#emitbitcode">-emitbitcode</a></td><td>Bitcode Writer</td></tr>
<tr><td><a href="#verify">-verify</a></td><td>Module Verifier</td></tr> <tr><td><a href="#verify">-verify</a></td><td>Module Verifier</td></tr>
</table> </table>
</div> </div>
@ -994,7 +994,7 @@
<!-------------------------------------------------------------------------- --> <!-------------------------------------------------------------------------- -->
<div class="doc_subsection"> <div class="doc_subsection">
<a name="emitbytecode">Bytecode Writer</a> <a name="emitbitcode">Bitcode Writer</a>
</div> </div>
<div class="doc_text"> <div class="doc_text">
<p>Yet to be written.</p> <p>Yet to be written.</p>

View File

@ -581,9 +581,9 @@ suite, it gives a report that looks like this:</p>
<div class="doc_code"> <div class="doc_code">
<pre> <pre>
7646 bytecodewriter - Number of normal instructions 7646 bitcodewriter - Number of normal instructions
725 bytecodewriter - Number of oversized instructions 725 bitcodewriter - Number of oversized instructions
129996 bytecodewriter - Number of bytecode bytes written 129996 bitcodewriter - Number of bitcode bytes written
2817 raise - Number of insts DCEd or constprop'd 2817 raise - Number of insts DCEd or constprop'd
3213 raise - Number of cast-of-self removed 3213 raise - Number of cast-of-self removed
5046 raise - Number of expression trees converted 5046 raise - Number of expression trees converted
@ -1935,7 +1935,7 @@ recursive types and late resolution of opaque types makes the situation very
difficult to handle. Fortunately, for the most part, our implementation makes difficult to handle. Fortunately, for the most part, our implementation makes
most clients able to be completely unaware of the nasty internal details. The most clients able to be completely unaware of the nasty internal details. The
primary case where clients are exposed to the inner workings of it are when primary case where clients are exposed to the inner workings of it are when
building a recursive type. In addition to this case, the LLVM bytecode reader, building a recursive type. In addition to this case, the LLVM bitcode reader,
assembly parser, and linker also have to be aware of the inner workings of this assembly parser, and linker also have to be aware of the inner workings of this
system. system.
</p> </p>

View File

@ -224,10 +224,10 @@ subtrees of the test suite directory tree are as follows:</p>
<li><tt>Analysis</tt>: checks Analysis passes.</li> <li><tt>Analysis</tt>: checks Analysis passes.</li>
<li><tt>Archive</tt>: checks the Archive library.</li> <li><tt>Archive</tt>: checks the Archive library.</li>
<li><tt>Assembler</tt>: checks Assembly reader/writer functionality.</li> <li><tt>Assembler</tt>: checks Assembly reader/writer functionality.</li>
<li><tt>Bytecode</tt>: checks Bytecode reader/writer functionality.</li> <li><tt>Bitcode</tt>: checks Bitcode reader/writer functionality.</li>
<li><tt>CodeGen</tt>: checks code generation and each target.</li> <li><tt>CodeGen</tt>: checks code generation and each target.</li>
<li><tt>Features</tt>: checks various features of the LLVM language.</li> <li><tt>Features</tt>: checks various features of the LLVM language.</li>
<li><tt>Linker</tt>: tests bytecode linking.</li> <li><tt>Linker</tt>: tests bitcode linking.</li>
<li><tt>Transforms</tt>: tests each of the scalar, IPO, and utility <li><tt>Transforms</tt>: tests each of the scalar, IPO, and utility
transforms to ensure they make the right transformations.</li> transforms to ensure they make the right transformations.</li>
<li><tt>Verifier</tt>: tests the IR verifier.</li> <li><tt>Verifier</tt>: tests the IR verifier.</li>

View File

@ -81,15 +81,15 @@
<tr><td>LLVMAsmParser</td><td><tt>.a</tt></td> <tr><td>LLVMAsmParser</td><td><tt>.a</tt></td>
<td>LLVM assembly parsing</td></tr> <td>LLVM assembly parsing</td></tr>
<tr><td>LLVMBCReader</td><td><tt>.a</tt></td> <tr><td>LLVMBCReader</td><td><tt>.a</tt></td>
<td>LLVM bytecode reading</td></tr> <td>LLVM bitcode reading</td></tr>
<tr><td>LLVMBCWriter</td><td><tt>.a</tt></td> <tr><td>LLVMBCWriter</td><td><tt>.a</tt></td>
<td>LLVM bytecode writing</td></tr> <td>LLVM bitcode writing</td></tr>
<tr><td>LLVMCore</td><td><tt>.a</tt></td> <tr><td>LLVMCore</td><td><tt>.a</tt></td>
<td>LLVM core intermediate representation</td></tr> <td>LLVM core intermediate representation</td></tr>
<tr><td>LLVMDebugger</td><td><tt>.a</tt></td> <tr><td>LLVMDebugger</td><td><tt>.a</tt></td>
<td>Source level debugging support</td></tr> <td>Source level debugging support</td></tr>
<tr><td>LLVMLinker</td><td><tt>.a</tt></td> <tr><td>LLVMLinker</td><td><tt>.a</tt></td>
<td>Bytecode and archive linking interface</td></tr> <td>Bitcode and archive linking interface</td></tr>
<tr><td>LLVMSupport</td><td><tt>.a</tt></td> <tr><td>LLVMSupport</td><td><tt>.a</tt></td>
<td>General support utilities</td></tr> <td>General support utilities</td></tr>
<tr><td>LLVMSystem</td><td><tt>.a</tt></td> <tr><td>LLVMSystem</td><td><tt>.a</tt></td>
@ -141,9 +141,9 @@
<tr><th colspan="3">Runtime Libraries</th></tr> <tr><th colspan="3">Runtime Libraries</th></tr>
<tr><td>LLVMInterpreter</td><td><tt>.o</tt></td> <tr><td>LLVMInterpreter</td><td><tt>.o</tt></td>
<td>Bytecode Interpreter</td></tr> <td>Bitcode Interpreter</td></tr>
<tr><td>LLVMJIT</td><td><tt>.o</tt></td> <tr><td>LLVMJIT</td><td><tt>.o</tt></td>
<td>Bytecode JIT Compiler</td></tr> <td>Bitcode JIT Compiler</td></tr>
<tr><td>LLVMExecutionEngine</td><td><tt>.o</tt></td> <tr><td>LLVMExecutionEngine</td><td><tt>.o</tt></td>
<td>Virtual machine engine</td></tr> <td>Virtual machine engine</td></tr>
</table> </table>

View File

@ -347,8 +347,8 @@ use the <tt>opt</tt> tool to access it, once loaded.</p>
<p>To test it, follow the example at the end of the <a <p>To test it, follow the example at the end of the <a
href="GettingStarted.html">Getting Started Guide</a> to compile "Hello World" to href="GettingStarted.html">Getting Started Guide</a> to compile "Hello World" to
LLVM. We can now run the bytecode file (<tt>hello.bc</tt>) for the program LLVM. We can now run the bitcode file (<tt>hello.bc</tt>) for the program
through our transformation like this (or course, any bytecode file will through our transformation like this (or course, any bitcode file will
work):</p> work):</p>
<div class="doc_code"><pre> <div class="doc_code"><pre>
@ -372,7 +372,7 @@ interesting way, we just throw away the result of <tt>opt</tt> (sending it to
$ opt -load ../../../Debug/lib/Hello.so --help $ opt -load ../../../Debug/lib/Hello.so --help
OVERVIEW: llvm .bc -&gt; .bc modular optimizer OVERVIEW: llvm .bc -&gt; .bc modular optimizer
USAGE: opt [options] &lt;input bytecode&gt; USAGE: opt [options] &lt;input bitcode&gt;
OPTIONS: OPTIONS:
Optimizations available: Optimizations available:
@ -407,7 +407,7 @@ Hello: main
Total Execution Time: 0.02 seconds (0.0479059 wall clock) Total Execution Time: 0.02 seconds (0.0479059 wall clock)
---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Pass Name --- ---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Pass Name ---
0.0100 (100.0%) 0.0000 ( 0.0%) 0.0100 ( 50.0%) 0.0402 ( 84.0%) Bytecode Writer 0.0100 (100.0%) 0.0000 ( 0.0%) 0.0100 ( 50.0%) 0.0402 ( 84.0%) Bitcode Writer
0.0000 ( 0.0%) 0.0100 (100.0%) 0.0100 ( 50.0%) 0.0031 ( 6.4%) Dominator Set Construction 0.0000 ( 0.0%) 0.0100 (100.0%) 0.0100 ( 50.0%) 0.0031 ( 6.4%) Dominator Set Construction
0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0013 ( 2.7%) Module Verifier 0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0013 ( 2.7%) Module Verifier
<b> 0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0033 ( 6.9%) Hello World Pass</b> <b> 0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0033 ( 6.9%) Hello World Pass</b>
@ -1413,8 +1413,8 @@ Module Pass Manager
Module Verifier Module Verifier
-- Dominator Set Construction -- Dominator Set Construction
-- Module Verifier -- Module Verifier
Bytecode Writer Bitcode Writer
--Bytecode Writer --Bitcode Writer
</pre></div> </pre></div>
<p>This output shows us when passes are constructed and when the analysis <p>This output shows us when passes are constructed and when the analysis
@ -1454,8 +1454,8 @@ Module Pass Manager
Module Verifier Module Verifier
-- Dominator Set Construction -- Dominator Set Construction
-- Module Verifier -- Module Verifier
Bytecode Writer Bitcode Writer
--Bytecode Writer --Bitcode Writer
Hello: __main Hello: __main
Hello: puts Hello: puts
Hello: main Hello: main
@ -1494,8 +1494,8 @@ Module Pass Manager
Module Verifier Module Verifier
-- Dominator Set Construction -- Dominator Set Construction
-- Module Verifier -- Module Verifier
Bytecode Writer Bitcode Writer
--Bytecode Writer --Bitcode Writer
Hello: __main Hello: __main
Hello: puts Hello: puts
Hello: main Hello: main