[LLVMdev] [DRAFT] Announcement for LLVM 1.6 [DRAFT]
John Criswell
criswell at cs.uiuc.edu
Thu Oct 27 08:38:27 PDT 2005
Chris Lattner wrote:
I can't think of anything you missed; most of my comments below are
about commas!
:(
FWIW,
-- John T.
>
> Hi All,
>
> I'm putting together the announcement for the LLVM 1.6 release. Here is
> what I have so far. Because so much has been done, it is very likely
> that I have forgotten something. If you have done something that is not
> on the list, please send me a private email so I can add it (also,
> please tell me if I've made a mistake or miscredited something)!
>
> My next project is to start hacking on the release notes. I would
> appreciate it if people could look into the documentation and let us
> know about (or fix!) anything that is out of date, misleading, or could
> be improved.
>
> I believe we are still on track to start rolling the release next monday
> (Oct 31), which makes the likely 'official' release to be about a week
> from then. Once the release is officially out, it would be great to get
> help making binary distros for additional platforms (e.g. Cygwin) and
> for packages to be built (e.g. for the various Linux distros).
>
> Thanks all!
>
> -Chris
>
> ----------------- 8< ----------------- 8< --------------------
>
> Insert high-level description/overview blurb here :)
> Themes: Major code generator work. New excellent performance/stability
> on PPC/darwin. Going back to 3-month release cycle. LLVM being used by
> many different people projects, e.g. papers being published.
>
> Major New Features:
>
> X. Reid added guards to the JIT, enabling it to JIT multithreaded code
> (on systems with pthreads). Threads support can be disabled by
> configuring LLVM with the --disable-threads swith.
> X. LLVM includes a new optimization to statically evaluate C++ static
> variable constructors when they are simple enough. For example, it can
> now statically initialize "struct X { int a; X() : a(4) {} } g;".
> X. The Loop Strength Reduction pass is completely rewritten, far more
> aggressive and enabled by default on most RISC targets. On PPC, we
> find that it often speeds up programs from 10-40% depending on the
> program.
> X. LLVM now includes support for auto-generating large portions of the
> instruction selectors from target descriptions. This allows us to
> write patterns in the target .td file, instead of writing lots of
There should be no comma in the line above.
> nasty C++ code. Most of the PowerPC instruction selector is now
> generated from the PowerPC target description files and other targets
> are adding support that will be live for LLVM 1.7.
> X. Andrew has dramatically improved the LLVM Alpha backend, to the point
Again, no comma.
> where it is now considered fully functional and off the 'beta' list.
>
>
> Major Code Generator Changes:
>
> X. Nate wrote a new component for the backend, a DAG Combiner. This
> allows the backend to take advantage of identities and do low-level
> peephole-style optimizations on the DAG.
> X. Nate added support for a new TargetSubtarget interface, which
> determines which parts of the target to enable based on the
> target-triple (e.g., whether to use GAS or Intel asm printers on X86).
> X. Jim Laskey extended sub-target support to include -mcpu and -mattr,
> allowing the target to think about what to do when particular features
> are enabled, but allowing the end-user to think about what CPU they
> have.
> X. Jim also contributed a new light-weight instruction scheduler,
> available to targets that use DAG-to-DAG instruction selectors. In
> this release, the scheduler is fully operational but needs tuning, so
> it is not enabled by default.
> X. The instruction selector framework now supports DAG-to-DAG instruction
> selection, where the instruction selector does pattern matching, but
Remove the second comma above.
> no code emission (necessary for scheduling & .td file autogeneration).
>
>
> Other Code Generator Changes:
>
> X. Duraid contributed many improvements to the Itanium backend
> (details??).
> X. Andrew Lenharth contributed a major change to the varargs support,
> allowing LLVM to work with targets whose va_list type is a struct.
> X. The instruction framework that debuted in LLVM 1.5 is far more mature
> and robust, and is able to handle many more strange target features.
Zap the comma above.
Also, do you mean instruction selector framework in the above line?
> X. Andrew added initial JIT support to the Alpha backend, which can run
> some simple programs. It is not fully complete yet though.
Comma before "though"
> X. Jim Laskey contributed patches to improve the instruction selection in
> the PowerPC backend, matching more RLWIMI cases for example.
Comman before "for example."
> X. Nate implemented most of the PowerPC DAG-to-DAG instruction selector.
> X. The tblgen tool & code generator now have more assertions and checking,
> which catch errors early, making it easier to work on the backend.
> X. The default register allocator is now far faster on some testcases,
> particularly on targets with a large number of registers (e.g. IA64
> and PPC).
> X. Jim extended tblgen to allow description of subtarget features in the
> .td files for the target.
Was this mentioned earlier, or is it subtly different from the last
comment on target triples support?
> X. There have been several minor improvements to the register allocator to
> coallesce more aggressively and coallesce spill code with copies more
> effectively.
>
>
> Miscellaneous Improvements:
>
> X. Andrew added support to the JIT to built a Global Offset Table if
> needed by a target.
> X. Alexander Friedman improved the .ll file parser to be able to read
> from a text buffer in addition to a file.
> X. Bryan Turner tried LLVM with Quest, a random testcase generator, and
> exposed several bugs (which are now fixed).
> X. The llvm-test suite can now use the NAG Fortran to C compiler to compile
> SPEC FP programs if available (allowing us to test all of SPEC'95 & 2K).
Comma before "if available"
> X. The JIT-debugger mode of bugpoint is now much faster than before.
> X. When bugpoint is grinding away and the user hits ctrl-C, it now
> gracefully stops and gives what it has reduced so far, instead of
> giving up completely.
Cool.
> X. LLVM now includes Xcode project files.
> X. Jim Laskey added bitvector support to the command line option parsing
> library. See http://llvm.org/docs/CommandLine.html#bits
> X. We no longer build two versions of most LLVM libraries, which reduces
> the time required to build LLVM.
> X. Documentation for the code generator is improving, though it is
> still incomplete: http://llvm.org/docs/CodeGenerator.html
> X. The code produced when exception handling is enabled is far more
> efficient in some cases, particularly on Mac OS/X.
>
>
> Portability Improvements:
>
> X. Nate added support for Mac OS/X on Intel.
> X. X86 tail calls now work with the JIT and Jeff Cohen added code
> to support them under Visual C++.
> X. Nate contributed a patch to allow LLVM to build with GCC 4.x, and Reid
> contributed several cleanup patches to silence GCC 4 warnings.
> X. The llvm-test suite is now fully compatible with Mac OS/X
> (non-portabilities in the programs have been fixed).
> X. Jeff Cohen contributed portability fixes to build on AMD64.
>
> In addition to the new features and infrastructure we have built, we
> have also fixed many minor bugs in the C/C++ front-end, optimizers, and
> code generator including 54 bugzilla bugs (search for target milestone =
> 1.6). LLVM 1.6 is by far the best release we've had yet!
>
> As usual, if you have any questions or comments about LLVM or any of the
> features in this status update, please feel free to contact the LLVMdev
> mailing list (llvmdev at cs.uiuc.edu)!
>
> Finally, here is the previous status report, the LLVM 1.5 announcement:
> http://lists.cs.uiuc.edu/pipermail/llvm-announce/2005-May/000016.html
>
> -Chris
>
--
John T. Criswell
Research Programmer
University of Illinois at Urbana-Champaign
"It's today!" said Piglet. "My favorite day," said Pooh.
More information about the llvm-dev
mailing list