[llvm-announce] LLVM October Status Update
Chris Lattner
sabre at nondot.org
Mon Oct 11 08:39:30 PDT 2004
Hi everyone,
This Fall has been busy, busy, busy. In addition to the usual LLVM
hacking, our developers have been moving all over the country, starting
classes, ending internships, getting married, and traveling the world.
Despite all of the non-LLVM fun we've been having, we've managed to get
some work done, too. :)
Here is my traditional distillation of llvm-commits:
New High-Level Features:
1. John, Reid and Misha split the large llvm/test/Programs tree out
into a separate "llvm-test" project. This makes it easy to
download the test suite independently from the LLVM core distro.
2. Nate has made a tremendous amount of progress on the PowerPC backend.
It is now feature-complete and generally works fine. He's just
starting to tune it, but we already generate code that is
either faster or on-par with GCC in most cases.
3. Reid has been working hard on 'llvmc', the new grand unified compiler
driver for front-ends. At this point it works pretty well, but is
still missing some minor pieces.
4. Brad Jones contributed initial support for "packed" types and values
to LLVM. Unfortunately, no code generators support packed types yet
though (which means we can't emit altivec or SSE yet; help welcome!).
5. Valery Khamenya contributed two small examples of programs that
dynamically create an LLVM module on the fly and execute it with
the JIT or interpreter (see the llvm/examples directory).
6. Brian added BFtoLLVM to the examples directory as a simple example
LLVM front-end for the 'bf' language.
7. Misha contributed llvm-test changes that allow us to use f2c to
test LLVM on the FORTRAN 77 programs in SPEC 95 and 2000. You can
download f2c from http://www.netlib.org/f2c.
8. Henrick Bach, Paolo Invernizzi, and Jeff Cohen are working hard to
get LLVM working natively on Win32 (i.e., compiling without cygwin)
with Visual C++ 7.1.
Important Source Changes:
9. Reid has been cleaning up and improving our system interfaces and
has introduced lib/System in the process. Eventually all
host-specific code will live in lib/System instead of lib/Support.
10. Many LLVM header files have moved, to make sure all llvm headers live
under the "include/llvm/*" directory structure (PR352).
http://mail.cs.uiuc.edu/pipermail/llvmdev/2004-September/001926.html
11. Interprocedural LLVM passes should now derive from ModulePass:
http://mail.cs.uiuc.edu/pipermail/llvmdev/2004-September/002142.html
New Documentation (contributions and suggestions welcome!):
12. Reid started the "LLVM Lexicon", a document meant to explain any and
all confusing terminology we use in and around LLVM.
http://llvm.cs.uiuc.edu/docs/Lexicon.html
13. Misha started the "How to write an LLVM Backend" document, located
here: http://llvm.cs.uiuc.edu/docs/WritingAnLLVMBackend.html , though
it is currently unfinished.
14. Reid added a new "Meet The LLVM Developers" page:
http://llvm.cs.uiuc.edu/Developers.html
15. There is now a new LLVM tutorial available to warm you up to
LLVM in general and writing LLVM transformations specifically:
http://llvm.cs.uiuc.edu/pubs/2004-09-22-LCPCLLVMTutorial.html
Code Generator Changes:
16. The code generator and target descriptions now support automatically
generating most of the target assembly printer. The PPC & X86
targets use this instead of the ad-hoc printers they used before.
17. The X86 backend can now emit either AT&T or Intel syntax (controlled
by "llc -x86-asm-syntax={intel|att}"): it now defaults to emitting
AT&T syntax on Unix targets.
18. Misha added a bunch of simple target-independent testcases to
test/Regression/CodeGen/Generic to help people working on new LLVM backends.
19. Nate added support to the code generator for targets that need to
save callee-saved registers in specific stack locations.
20. Alkis contributed several improvements to the linear scan register
allocator, making it run faster and produce better code.
21. Jeff Cohen contributed a patch to the X86 backend to make better use
of complex addressing modes.
22. Nate added support for isLoad/isStore flags to target .td files.
23. The register allocator interface now uses a new spiller (-spiller=local)
which produces substantially better code on X86 with linear scan in
some cases (and is faster than the old one).
Optimizer Changes:
24. The -constifier pass was renamed to -globalopt.
25. The -globalopt pass is now significantly more aggressive at
optimizing global variables, shrinking some programs by 20% or more
(e.g. 252.eon and 256.bzip2).
26. The instruction combiner is more aggressive, handling many new
patterns.
Miscellaneous Changes:
27. John fixed the configure script so that you shouldn't have to rebuild
all of LLVM after a change to config.h (usually just lib/System).
28. The JIT interfaces have been enhanced to allow C++ code to JIT and
call any LLVM function (previously only 'main' and nullary functions
were really supported).
29. Bill Wendling contributed a patch that enables the C backend to emit
NAN and +/- infinity global variable initializers (PR33).
30. llvm-test now includes benchmarks from the Prolangs-C and
Prolangs-C++ suites.
31. Reid added further optimizations to the bytecode format, shrinking
files up to 30% in some cases.
http://mail.cs.uiuc.edu/pipermail/llvmdev/2004-August/001721.html
Significant Bugs Fixed:
32. The LICM pass could cause a compiler crash (PR420).
33. The C++ front-end was not emitting all template instantiations in
some cases, leading to link errors in some programs (like LLVM
itself). PR445
34. Several huge (algorithmic) speedups have been incorporated into the
asmprinter (thanks Reid!), verifier, and type resolution code that
affect obscure border cases.
At this point, we're tentatively looking at release LLVM 1.4 at the end of
November. There are a number of cool new features on the verge of being
completed by several people, and it would be nice to get them merged in
before the release. In any case, if you're still using LLVM 1.3, feel
free to update to latest CVS, which is more stable and featureful than 1.3
was.
Finally, here's a link to our last status update, the LLVM 1.3 release:
http://mail.cs.uiuc.edu/pipermail/llvm-announce/2004-August/000011.html
If you have any comments or questions about LLVM or anything in this
status update, please feel free to contact us on the llvmdev list!
-Chris
--
http://llvm.org/
http://nondot.org/sabre/
More information about the llvm-announce
mailing list