continue the process of detangling this.

llvm-svn: 101992
This commit is contained in:
Chris Lattner 2010-04-21 06:23:40 +00:00
parent 3ecc665505
commit 1dcca8bd5e
1 changed files with 95 additions and 30 deletions

View File

@ -257,6 +257,11 @@ The first dragonegg release will occur shortly after llvm-2.7 is released.
The LLVM Machine Code (MC) Toolkit project is ... The LLVM Machine Code (MC) Toolkit project is ...
</p> </p>
<p>
MC Disassembler (with blog post), MCInstPrinter. Many X86 backend and AsmPrinter simplifications
Can transcode from GAS to intel syntax with "llvm-mc foo.s -output-asm-variant=1"
</p>
</div> </div>
@ -380,16 +385,22 @@ organization changes have happened:
<ul> <ul>
<li>LLVM has a new <a href="http://llvm.org/Logo.html">official Logo</a>!</li> <li>LLVM has a new <a href="http://llvm.org/Logo.html">official Logo</a>!</li>
<li><a href="http://llvm.org">llvm.org</a> is now hosted on a new (and much
faster) server. It is still hosted as the University of Illinois.</li>
<li>Ted Kremenek and Doug Gregor have stepped forward as <a <li>Ted Kremenek and Doug Gregor have stepped forward as <a
href="http://llvm.org/docs/DeveloperPolicy.html#owners">Code Owners</a> of the href="http://llvm.org/docs/DeveloperPolicy.html#owners">Code Owners</a> of the
Clang static analyzer and the Clang Frontend, respectively.</li> Clang static analyzer and the Clang Frontend, respectively.</li>
<li>LLVM now has an <a href="http://blog.llvm.org">official Blog</a> at
<a href="http://blog.llvm.org">http://blog.llvm.org</a>. This is a great way
to learn about new LLVM-related features as they are implemented. Several
features in this release are already explained on the blog.</li>
<li>The LLVM web pages are now checked into the SVN server, in the "www", <li>The LLVM web pages are now checked into the SVN server, in the "www",
"www-pubs" and "www-releases" SVN modules. Previously they were hidden in a "www-pubs" and "www-releases" SVN modules. Previously they were hidden in a
largely inaccessible old CVS server.</p> largely inaccessible old CVS server.</p>
<li><a href="http://llvm.org">llvm.org</a> is now hosted on a new (and much
faster) server. It is still graciously hosted at the University of Illinois
of Urbana Champaign.</li>
</ul> </ul>
</div> </div>
@ -403,25 +414,47 @@ faster) server. It is still hosted as the University of Illinois.</li>
<p>LLVM 2.7 includes several major new capabilities:</p> <p>LLVM 2.7 includes several major new capabilities:</p>
<ul> <ul>
<li>New MicroBlaze backend. http://en.wikipedia.org/wiki/MicroBlaze</li> <li>This release includes initial support for the <a
href="http://en.wikipedia.org/wiki/MicroBlaze">MicroBlaze</a> target.
MicroBlaze is a soft processor core designed for Xilinx FPGAs.</li>
<li>Extensible metadata solid.</li> <li>LLVM 2.7 includes a new LLVM IR "extensible metadata" feature. This feature
supports many different use cases, including allowing front-end authors to
encode source level information into LLVM IR, which is consumed by later
language-specific passes. This is a great way to do high-level optimizations
like devirtualization, type-based alias analysis, etc. See the <a
href="http://blog.llvm.org/2010/04/extensible-metadata-in-llvm-ir.html">
Extensible Metadata Blog Post</a> for more information.</li>
<li>LLVM 2.7 encodes <a href="SourceLevelDebugging.html">debug information</a>
in a completely new way, built on extensible metadata. The new implementation
is much more memory efficient and paves the way for improvements to optimized
code debugging experience.</li>
<li>Debug info improvements: using metadata instead of llvm.dbg global variables. <li>LLVM 2.7 now directly supports taking the address of a label and doing an
This brings several enhancements including improved compile times.</li> indirect branch through a pointer. This is particularly useful for
interpreter loops, and is used to implement the GCC "address of label"
extension. For more information, see the <a
href="http://blog.llvm.org/2010/01/address-of-label-and-indirect-branches.html">
Address of Label and Indirect Branches in LLVM IR Blog Post</a>.
<li>Indirect branch + address of label (blog post), particularly useful for <li>LLVM 2.7 is the first release to start supporting APIs for assembling and
interpreters.</li> disassembling target machine code. These APIs are useful for a variety of
low level clients, and are surfaced in the new "enhanced disassembly" API.
For more information see the <a
href="http://blog.llvm.org/2010/01/x86-disassembler.html">The X86
Disassembler Blog Post</a> for more information.</li>
<li>New instruction selector.</li> <li>LLVM 2.7 includes major parts of the work required by the new MC Project,
which aims to rework our handling of low-level machine code. A few targets
have been refactored to support it, and work is underway to support a native
assembler in LLVM. This work is not complete in LLVM 2.7, but you has made
substantially more progress on LLVM mainline. You can read more about this
in the <a href="http://blog.llvm.org/2010/04/intro-to-llvm-mc-project.html">
Intro to the LLVM MC Project Blog Post</a>.
</li>
</ul> </ul>
libllvm2.7.so?? configure with --enable-shared
MC encoding and disassembler apis.
MC Disassembler (with blog post), MCInstPrinter. Many X86 backend and AsmPrinter simplifications
Can transcode from GAS to intel syntax with "llvm-mc foo.s -output-asm-variant=1"
</div> </div>
@ -435,12 +468,22 @@ Can transcode from GAS to intel syntax with "llvm-mc foo.s -output-asm-variant=1
expose new optimization opportunities:</p> expose new optimization opportunities:</p>
<ul> <ul>
<li>New InlineHint and StackAlignment function attributes <li>LLVM IR now supports a 16-bit "half float" data type through two new <a
Half-float support in APFloat href="LangRef.html#int_fp16">intrinsics</a> and APFloat support.</li>
llvm.objectsize. <li>LLVM IR supports two <a href="LangRef.html#fnattrs">new function
New llvm/Support/Regex.h API. FileCheck now does regex's attributes</a>: inlinehint and alignstack(n). The former is a hint to the
Pre-Alpha support for unions in IR. optimizer that a function was declared 'inline' and thus it might be useful
dbgs() and -debug-buffer-size=N to increase the chances the the inliner actually inline it. The later
indicates to the code generator that the function diverges from the platform
ABI on stack alignment.</li>
<li>The new <a href="LangRef.html#int_objectsize">llvm.objectsize</a> intrinsic
allows the optimizer to infer the sizes of memory objects in some cases.
This intrinsic is used to implement the GCC __builtin_object_size
extension.</li>
<li>LLVM 2.7 has pre-alpha support for <a
href="http://llvm.org/docs/LangRef.html#t_union">unions in LLVM IR</a>.
Unfortuantely, this support is not really usable in 2.7, so if you're
interested in pushing it forward, please help contribute to LLVM mainline.</li>
</li> </li>
</ul> </ul>
@ -524,6 +567,7 @@ infrastructure, which allows us to implement more aggressive algorithms and make
it run faster:</p> it run faster:</p>
<ul> <ul>
<li>New instruction selector [blog post?].</li>
Code generator MC'ized except for debug info and EH. Code generator MC'ized except for debug info and EH.
@ -576,12 +620,21 @@ Many improvements to debug info
<ul> <ul>
<li>complete llvm-gcc NEON support.</li> <li>The ARM backend now generates instructions in unified assembly syntax.</li>
<li>ARM/Thumb using reg scavenging for stack object address materialization
(PEI).</li> <li>llvm-gcc now has complete support for the ARM v7 NEON instruction set. This
<li>The ARM backend now has good support for ARMv4 backend (tested on StrongARM support differs slightly from the GCC implementation. Please see the
hardware), previously only supported ARMv4T and newer.</li> <a
<li>ARM backend generates instructions in unified assembly syntax.</li> href="http://blog.llvm.org/2010/04/arm-advanced-simd-neon-intrinsics-and.html">
ARM Advanced SIMD (NEON) Intrinsics and Types in LLVM Blog Post</a> for
helpful information if migrating code from GCC to LLVM-GCC.</li>
<li>The ARM and Thumb code generators now using register scavenging for stack
object address materialization.(FIXME: WHAT BENEFIT DOES THIS PROVIDE?)</li>
<li>The ARM backend now has good support for ARMv4 targets, and has been tested
on StrongARM hardware. Previously, LLVM only supported ARMv4T and
newer chips.</li>
</ul> </ul>
@ -614,7 +667,16 @@ Many improvements to debug info
</p> </p>
<ul> <ul>
<li>...</li> <li>The llvm/Support/Regex.h header exposes a platform independent regular
expression API. Building on this, the <a
href="TestingGuide.html#FileCheck">FileCheck</a> utility now supports
regular exressions.</li>
<li>raw_ostream now supports a circular "debug stream" accessed with "dbgs()".
By default, this stream works the same way as "errs()", but if you pass
<tt>-debug-buffer-size=1000</tt> to opt, the debug stream is capped to a
fixed sized circular buffer and the output is printed at the end of the
program's execution. This is helpful if you have a long lived compiler
process and you're interested in seeing snapshots in time.</li>
</ul> </ul>
@ -629,6 +691,9 @@ Many improvements to debug info
<p>Other miscellaneous features include:</p> <p>Other miscellaneous features include:</p>
<ul> <ul>
<li>You can now build LLVM as a big dynamic library (e.g. "libllvm2.7.so"). To
get this, configure LLVM with the --enable-shared option.</li>
<li>LLVM command line tools now overwrite their output by default, before they <li>LLVM command line tools now overwrite their output by default, before they
would only do this with -f. This makes them more convenient to use, and would only do this with -f. This makes them more convenient to use, and
behave more like standard unix tools.</li> behave more like standard unix tools.</li>