mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-19 04:31:17 +00:00
Some grammar fixes, and non-invasive format changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58237 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7cb07874dc
commit
741748afce
@ -98,28 +98,31 @@ generation support is far enough along to build many C applications. While not
|
|||||||
yet production quality, it is progressing very nicely. In addition, C++
|
yet production quality, it is progressing very nicely. In addition, C++
|
||||||
front-end work has started to make significant progress.</p>
|
front-end work has started to make significant progress.</p>
|
||||||
|
|
||||||
Clang, in conjunction with the <tt>ccc</tt> driver, is now usable as a
|
<p>Clang, in conjunction with the <tt>ccc</tt> driver, is now usable as a
|
||||||
replacement for gcc for building some small- to medium-sized C applications.
|
replacement for gcc for building some small- to medium-sized C applications.
|
||||||
Additionally, Clang now has code generation support for Objective-C on Mac OS X
|
Additionally, Clang now has code generation support for Objective-C on Mac OS X
|
||||||
platform. Major highlights include:
|
platform. Major highlights include:</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li> Clang/ccc pass almost all of the LLVM test suite on Mac OS X and Linux
|
<li> Clang/ccc pass almost all of the LLVM test suite on Mac OS X and Linux
|
||||||
on the 32-bit x86 architecture. This includes significant C
|
on the 32-bit x86 architecture. This includes significant C
|
||||||
applications such as <a href="http://www.sqlite.org">sqlite3</a>,
|
applications such as <a href="http://www.sqlite.org">sqlite3</a>,
|
||||||
<a href="http://www.lua.org">lua</a>, and
|
<a href="http://www.lua.org">lua</a>, and
|
||||||
<a href="http://www.clamav.net">Clam AntiVirus</a>.
|
<a href="http://www.clamav.net">Clam AntiVirus</a>. </li>
|
||||||
|
|
||||||
<li> Clang can build the majority of Objective-C examples shipped with the
|
<li> Clang can build the majority of Objective-C examples shipped with the
|
||||||
Mac OS X Developer Tools.
|
Mac OS X Developer Tools. </li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
Clang code generation still needs considerable testing and development, however.
|
<p>Clang code generation still needs considerable testing and development,
|
||||||
Some areas under active development include:
|
however. Some areas under active development include:</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li> Improved support for C and Objective-C features, for example
|
<li> Improved support for C and Objective-C features, for example
|
||||||
variable-length arrays, va_arg, exception handling (Obj-C), and garbage
|
variable-length arrays, va_arg, exception handling (Obj-C), and garbage
|
||||||
collection (Obj-C).
|
collection (Obj-C). </li>
|
||||||
<li> ABI compatibility, especially for platforms other than 32-bit x86.
|
<li> ABI compatibility, especially for platforms other than 32-bit
|
||||||
|
x86. </li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -145,15 +148,14 @@ has found in industrial-quality software on the order of thousands.</p>
|
|||||||
the tool. While still early in development, the GUI illustrates some of the key
|
the tool. While still early in development, the GUI illustrates some of the key
|
||||||
features of Clang: accurate source location information, which is used by the
|
features of Clang: accurate source location information, which is used by the
|
||||||
GUI to highlight specific code expressions that relate to a bug (including those
|
GUI to highlight specific code expressions that relate to a bug (including those
|
||||||
that span multiple lines) and built-in knowledge of macros, which is used to
|
that span multiple lines); and built-in knowledge of macros, which is used to
|
||||||
perform inline expansion of macros within the GUI itself.</p>
|
perform inline expansion of macros within the GUI itself.</p>
|
||||||
|
|
||||||
<p>The set of checks performed by the static analyzer is gradually expanding,
|
<p>The set of checks performed by the static analyzer is gradually expanding,
|
||||||
and
|
and future plans for the tool include full source-level inter-procedural
|
||||||
future plans for the tool include full source-level inter-procedural analysis
|
analysis and deeper checks such as buffer overrun detection. There are many
|
||||||
and deeper checks such as buffer overrun detection. There are many opportunities
|
opportunities to extend and enhance the static analyzer, and anyone interested
|
||||||
to extend and enhance the static analyzer, and anyone interested in working on
|
in working on this project is encouraged to get involved!</p>
|
||||||
this project is encouraged to get involved!</p>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -174,15 +176,15 @@ bug fixes, cleanup and new features. The major changes are:</p>
|
|||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
|
||||||
<li> Support for generics in the .Net virtual machine.
|
<li> Support for generics in the .Net virtual machine.</li>
|
||||||
<li> Initial support for the Mono class libraries.
|
<li> Initial support for the Mono class libraries. </li>
|
||||||
<li> Support for MacOSX/x86, following LLVM's support for exceptions in
|
<li> Support for MacOSX/x86, following LLVM's support for exceptions in
|
||||||
JIT on MacOSX/x86.
|
JIT on MacOSX/x86. </li>
|
||||||
<li> A new vmkit driver: a program to run java or .net applications. The
|
<li> A new vmkit driver: a program to run java or .net applications. The driver
|
||||||
driver supports llvm command line arguments including the new "-fast" option.
|
supports llvm command line arguments including the new "-fast" option. </li>
|
||||||
<li> A new memory allocation scheme in the JVM that makes unloading a
|
<li> A new memory allocation scheme in the JVM that makes unloading a
|
||||||
class loader very fast.
|
class loader very fast. </li>
|
||||||
<li> VMKit now follows the LLVM Makefile machinery.
|
<li> VMKit now follows the LLVM Makefile machinery. </li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -196,7 +198,7 @@ class loader very fast.
|
|||||||
|
|
||||||
<div class="doc_text">
|
<div class="doc_text">
|
||||||
|
|
||||||
<p>This release includes a huge number of bug fixes, performance tweaks and
|
<p>This release includes a huge number of bug fixes, performance tweaks, and
|
||||||
minor improvements. Some of the major improvements and new features are listed
|
minor improvements. Some of the major improvements and new features are listed
|
||||||
in this section.
|
in this section.
|
||||||
</p>
|
</p>
|
||||||
@ -214,24 +216,24 @@ in this section.
|
|||||||
<ul>
|
<ul>
|
||||||
<li><p>The most visible end-user change in LLVM 2.4 is that it includes many
|
<li><p>The most visible end-user change in LLVM 2.4 is that it includes many
|
||||||
optimizations and changes to make -O0 compile times much faster. You should see
|
optimizations and changes to make -O0 compile times much faster. You should see
|
||||||
improvements on the order of 30% (or more) faster than LLVM 2.3. There are many
|
improvements in speed on the order of 30% (or more) than in LLVM 2.3. There are
|
||||||
pieces to this change, described in more detail below. The speedups and new
|
many pieces to this change described in more detail below. The speedups and new
|
||||||
components can also be used for JIT compilers that want fast compilation as
|
components can also be used for JIT compilers that want fast
|
||||||
well.</p></li>
|
compilation.</p></li>
|
||||||
|
|
||||||
<li><p>The biggest change to the LLVM IR is that Multiple Return Values (which
|
<li><p>The biggest change to the LLVM IR is that Multiple Return Values (which
|
||||||
were introduced in LLVM 2.3) have been generalized to full support for "First
|
were introduced in LLVM 2.3) have been generalized to full support for "First
|
||||||
Class Aggregate" values in LLVM 2.4. This means that LLVM IR supports using
|
Class Aggregate" values in LLVM 2.4. This means that LLVM IR supports using
|
||||||
structs and arrays as values in a function. This capability is mostly useful
|
structs and arrays as values in a function. This capability is mostly useful
|
||||||
for front-end authors, who prefer to treat things like complex numbers, simple
|
for front-end authors, who prefer to treat things like complex numbers, simple
|
||||||
tuples, dope vectors, etc as Value*'s instead of as a tuple of Value*'s or as
|
tuples, dope vectors, etc., as Value*'s instead of as a tuple of Value*'s or as
|
||||||
memory values. Bitcode files from LLVM 2.3 will automatically migrate to the
|
memory values. Bitcode files from LLVM 2.3 will automatically migrate to the
|
||||||
general representation.</p></li>
|
general representation.</p></li>
|
||||||
|
|
||||||
<li><p>LLVM 2.4 also includes an initial port for the PIC16 microprocessor. This
|
<li><p>LLVM 2.4 also includes an initial port for the PIC16 microprocessor. This
|
||||||
is the LLVM target that only has support for 8 bit registers, and a number of
|
target only has support for 8 bit registers, and a number of other crazy
|
||||||
other crazy constraints. While the port is still in early development stages,
|
constraints. While the port is still in early development stages, it shows some
|
||||||
it shows some interesting things you can do with LLVM.</p></li>
|
interesting things you can do with LLVM.</p></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@ -251,20 +253,20 @@ includes support for the C, C++, Objective-C, Ada, and Fortran front-ends.</p>
|
|||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>LLVM 2.4 supports the full set of atomic <tt>__sync_*</tt> builtins. LLVM
|
<li>LLVM 2.4 supports the full set of atomic <tt>__sync_*</tt> builtins. LLVM
|
||||||
2.3 only supported those used by OpenMP, but 2.4 supports them all. While
|
2.3 only supported those used by OpenMP, but 2.4 supports them all. Note that
|
||||||
llvm-gcc supports all of these builtins, note that not all targets do. X86
|
while llvm-gcc supports all of these builtins, not all targets do. X86 support
|
||||||
support them all in both 32-bit and 64-bit mode and PowerPC supports them all
|
them all in both 32-bit and 64-bit mode and PowerPC supports them all except for
|
||||||
except for the 64-bit operations when in 32-bit mode.</li>
|
the 64-bit operations when in 32-bit mode.</li>
|
||||||
|
|
||||||
<li>llvm-gcc now supports an <tt>-flimited-precision</tt> option, which tells
|
<li>llvm-gcc now supports an <tt>-flimited-precision</tt> option, which tells
|
||||||
the compiler that it is ok to use low-precision approximations of certain libm
|
the compiler that it is okay to use low-precision approximations of certain libm
|
||||||
functions (like tan, log, etc). This allows you to get high performance if you
|
functions (like <tt>exp</tt>, <tt>log</tt>, etc). This allows you to get high
|
||||||
only need (say) 14-bits of precision.</li>
|
performance if you only need (say) 12-bits of precision.</li>
|
||||||
|
|
||||||
<li>llvm-gcc now supports a C language extension known as "<a
|
<li>llvm-gcc now supports a C language extension known as "<a
|
||||||
href="http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-August/002670.html">Blocks</a>".
|
href="http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-August/002670.html">Blocks</a>".
|
||||||
This feature is similar to nested functions and closures, but does not
|
This feature is similar to nested functions and closures, but does not
|
||||||
require stack trampolines (with most ABIs) and supports returning closures
|
require stack trampolines (with most ABIs), and supports returning closures
|
||||||
from functions that define them. Note that actually <em>using</em> Blocks
|
from functions that define them. Note that actually <em>using</em> Blocks
|
||||||
requires a small runtime that is not included with llvm-gcc.</li>
|
requires a small runtime that is not included with llvm-gcc.</li>
|
||||||
|
|
||||||
@ -284,8 +286,7 @@ Previously, LTO could only be used with -O4, which implied optimizations in
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="doc_text">
|
<div class="doc_text">
|
||||||
<p>New features include:
|
<p>New features include:</p>
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>A major change to the <tt>Use</tt> class landed, which shrank it by 25%. Since
|
<li>A major change to the <tt>Use</tt> class landed, which shrank it by 25%. Since
|
||||||
@ -298,14 +299,14 @@ nicely. They now print as "<tt>%3 = add i32 %A, 4</tt>" instead of
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>LLVM 2.4 includes some changes for better vector support. First, the shift
|
<li>LLVM 2.4 includes some changes for better vector support. First, the shift
|
||||||
operations (<tt>shl</tt>, <tt>ashr</tt>, <tt>lshr</tt>) now all support vectors
|
operations (<tt>shl</tt>, <tt>ashr</tt>, and <tt>lshr</tt>) now all support
|
||||||
and do an element-by-element shift (shifts of the whole vector can be
|
vectors and do an element-by-element shift (shifts of the whole vector can be
|
||||||
accomplished by bitcasting the vector to <1 x i128> for example). Second,
|
accomplished by bitcasting the vector to <1 x i128>, for example). Second,
|
||||||
there is initial support in development for vector comparisons with the
|
there is initial support in development for vector comparisons with the
|
||||||
<a href="LangRef.html#i_fcmp">fcmp</a>/<a href="LangRef.html#i_icmp">icmp</a>
|
<tt><a href="LangRef.html#i_fcmp">fcmp</a>/<a href="LangRef.html#i_icmp">icmp</a></tt>
|
||||||
instructions. These instructions compare two vectors and return a vector of
|
instructions. These instructions compare two vectors and return a vector of
|
||||||
i1's for each result. Note that there is very little codegen support available
|
<tt>i1</tt>'s for each result. Note that there is very little codegen support
|
||||||
for any of these IR features though.</li>
|
available for any of these IR features though.</li>
|
||||||
|
|
||||||
<li>A new <tt>DebugInfoBuilder</tt> class is available, which makes it much
|
<li>A new <tt>DebugInfoBuilder</tt> class is available, which makes it much
|
||||||
easier for front-ends to create debug info descriptors, similar to the way that
|
easier for front-ends to create debug info descriptors, similar to the way that
|
||||||
@ -317,11 +318,11 @@ constant folding. The <tt>NoFolder</tt> class does no constant folding at all,
|
|||||||
useful when learning how LLVM works. The <tt>TargetFolder</tt> class folds the most,
|
useful when learning how LLVM works. The <tt>TargetFolder</tt> class folds the most,
|
||||||
doing target dependent constant folding.</li>
|
doing target dependent constant folding.</li>
|
||||||
|
|
||||||
<li>LLVM now supports "function attributes", which allows us to separate return
|
<li>LLVM now supports "function attributes", which allow us to separate return
|
||||||
value attributes from function attributes. LLVM now supports attributes on a
|
value attributes from function attributes. LLVM now supports attributes on a
|
||||||
function itself, a return value, and its parameters. New supported function
|
function itself, a return value, and its parameters. New supported function
|
||||||
attributes include noinline/alwaysinline and the "opt-size" flag which says the
|
attributes include <tt>noinline/alwaysinline</tt> and the <tt>opt-size</tt> flag,
|
||||||
function should be optimized for code size.</li>
|
which says the function should be optimized for code size.</li>
|
||||||
|
|
||||||
<li>LLVM IR now directly represents "common" linkage, instead of
|
<li>LLVM IR now directly represents "common" linkage, instead of
|
||||||
representing it as a form of weak linkage.</li>
|
representing it as a form of weak linkage.</li>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user