mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-19 06:31:18 +00:00
describe major new features and llvm-gcc features.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57463 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d939f4a347
commit
b82eb06faf
@ -156,21 +156,25 @@ in this section.
|
|||||||
<p>LLVM 2.4 includes several major new capabilities:</p>
|
<p>LLVM 2.4 includes several major new capabilities:</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li><p>The most visible end-user change in LLVM 2.4 is that it includes many
|
||||||
<p>MRVs got generalized to FCAs. getresult is gone, ret with multiple values
|
optimizations and changes ot make -O0 compile times much faster. You should see
|
||||||
is gone.</p>
|
improvements on the order of 30% or more faster than LLVM 2.3. There are many
|
||||||
</li>
|
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
|
||||||
|
well.</p></li>
|
||||||
|
|
||||||
<li><p>-O0 compile times overall much faster</p></li>
|
<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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
memory values.</p></li>
|
||||||
|
|
||||||
<li><p>Attrs changes?</p></li>
|
<li><p>LLVM 2.4 also includes an initial port for the PIC16 microprocessor. This
|
||||||
|
is the LLVM targer that only has support for 8 bit registers, and a number of
|
||||||
|
other crazy constraints. While the port is still in early development stages,
|
||||||
<li><p>Initial PIC16 port</p></li>
|
it shows some interesting things you can do with LLVM.</p></li>
|
||||||
|
|
||||||
<li><p> Support the rest of the atomic __sync builtins</p></li>
|
|
||||||
|
|
||||||
<li><p>...</p></li>
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@ -184,16 +188,32 @@ in this section.
|
|||||||
|
|
||||||
<div class="doc_text">
|
<div class="doc_text">
|
||||||
|
|
||||||
<p>LLVM 2.4 fully supports the llvm-gcc 4.2 front-end, and includes support
|
<p>LLVM fully supports the llvm-gcc 4.2 front-end, which marries the GCC
|
||||||
for the C, C++, Objective-C, Ada, and Fortran front-ends.</p>
|
front-ends and driver with the LLVM optimizer and code generator. It currently
|
||||||
|
includes support for the C, C++, Objective-C, Ada, and Fortran front-ends.</p>
|
||||||
|
|
||||||
<p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>block-pointers<li>
|
<li>LLVM 2.4 supports the full set of atomic __sync builtins. LLVM 2.3 only
|
||||||
<li>alpha?<li>
|
supported those used by OpenMP, but 2.4 supports them all. Not all targets
|
||||||
<li>-flimited-precision</li>
|
support all builtins, but X86 and PowerPC do.</li>
|
||||||
<li>-flto</li>
|
|
||||||
|
|
||||||
|
<li>llvm-gcc now supports an -flimited-precision option, which tells the
|
||||||
|
compiler that it is ok to use low-precision approximations of certain libm
|
||||||
|
functions (like tan, log, etc). This allows you to get high performance if you
|
||||||
|
only need (say) 14-bits of precision.</li>
|
||||||
|
|
||||||
|
<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>. This feature is similar to nested functions and closures, but does not
|
||||||
|
require stack trampolines (with most ABIs) and supports returning closures
|
||||||
|
from functions that define them. Note that actually <em>using</em> Blocks
|
||||||
|
requires a small runtime that is not included with llvm-gcc.</li>
|
||||||
|
|
||||||
|
<li>llvm-gcc now supports a new <tt>-flto</tt> option. On systems that support
|
||||||
|
transparent Link Time Optimization (currently Darwin systems with Xcode 3.1 and
|
||||||
|
later) this allows the use of LTO with other optimization levels like -Os.
|
||||||
|
Previously, LTO could only be used with -O4, which implied optimizations in
|
||||||
|
-O3 that can increase code size.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -216,6 +236,7 @@ for the C, C++, Objective-C, Ada, and Fortran front-ends.</p>
|
|||||||
<li>DebugInfoBuilder</li>
|
<li>DebugInfoBuilder</li>
|
||||||
<li>.ll printing format change: %3 = add i32 4, 2</li>
|
<li>.ll printing format change: %3 = add i32 4, 2</li>
|
||||||
<li>opt-size, noinline, alwaysinline function attributes</li>
|
<li>opt-size, noinline, alwaysinline function attributes</li>
|
||||||
|
<li>Attrs: function, return, param.</p></li>
|
||||||
<li>...</li>
|
<li>...</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user