[llvm-announce] LLVM July Status Update

Chris Lattner sabre at nondot.org
Mon Jul 12 17:54:18 CDT 2004

July Status Update

Hi everyone!

This month has been a busy month of cleanups and refinements, and marks
over a year of LLVM status updates :).  LLVM is getting substantially
smaller (in memory footprint) and faster, received a few cool new
features, and has a few more fixed bugs.  We are currently thinking about
unleashing the LLVM 1.3 release in about 3-4 weeks from now.

If you're interested in LLVM, have a few questions about it, or just want
to chat with the developers, you might want to drop in to the official
#llvm IRC Channel on irc.oftc.net.  If you're running Mozilla and have
chatzilla installed, you can join by clicking here:

Anyway, here's the usual dose of good stuff people have been working on:

High-Level Changes:

 1. Reid is continuing to work on PR122.  In particular, the LLVM Type
    class now no longer derives from the Value class, which is a huge
    cleanup and a big fix for LLVM!
 2. Brian and Misha finished conversion of the LLVM Command Guide to perl
    POD format, which provides HTML and *man* pages for all of the LLVM
    tools. Get your copy here: http://llvm.cs.uiuc.edu/docs/CommandGuide/
 3. Tanya found and fixed all of the broken links on the LLVM web page.
 4. Several nasty sources of non-determinism in the compiler have been
    eliminated, including these passes: mem2reg, licm, domset, domtree,
    simplifycfg, inline, scalarevolutions, argpromotion.

LLVM IR Size Reduction:

 5. We've started to look at reducing the memory footprint of the various
    LLVM IR classes.  The meta-bug PR388 now tracks various ideas for
    reducing the size of the LLVM IR: http://llvm.cs.uiuc.edu/PR388
 6. Reid's patches for PR122 have reduced the size of the LLVM Type class
    by 20 bytes by eliminating Value overhead from the Type class:
 7. In addition, subsequent patches have shrunk the overhead of each Type
    by 12 more bytes and the LLVM Instruction class also shrunk by 12
    bytes since LLVM 1.2.

New Cool Features:

 8. Reid finished up the LLVM bytecode analyzer tool, useful for
    inspecting bytecode file internals:
 9. Reid completed the LLVM Bytecode Format Specification:
10. LLVM now has a very simple (though quite effective) implementation of
    a context-sensitive mod/ref analysis for global variables. For details,
    see http://llvm.cs.uiuc.edu/docs/AliasAnalysis.html#globalsmodref

LLVM Core Additions:

11. The BinaryOperator class now has a BinaryOperator::createAdd(...)
    method as a shortcut for BinaryOperator::create(Instruction::Add,
    ...).  It also has methods for all of the other opcodes too :)
12. LLVM now has an llvm.isunordered intrinsic for unordered floating
    point comparison support.

Code Generator Changes:

13. Vladimir Prus contributed a nice ConstantExpr lowering pass that makes
    it substantially easier to write instruction selectors for LLVM.
14. The target-independent live-variable analysis is quicker and simpler
    than before.
15. Vladimir Prus contributed code generator support for targets that have
    object alignments bigger than their size (e.g. bytes aligned on 32-bit
16. Alkis implemented MachineFunction::viewCFG and ::viewCFGOnly methods,
    which make it really easy to visualize machine code in a debugger
    (operating like the Function::viewCFG method).  Note that this does
    not work with the SparcV9 target yet.
17. The LLVM llc and lli tools now support dynamically loaded target

C/C++ Front-end Changes:

18. Fixed Bug #377, which caused the C front-end to miscompile static
    bitfield initializers in some cases.  This bug affected 124.m88ksim.
19. The C front-end now supports C99 unordered comparison operations like

Nightly Tester Related Changes:

20. Vladimir Merzliakov contributed changes to get the LLVM test suite
    working on FreeBSD again and is hosting a FreeBSD nightly tester.
21. Reid is now hosting a nightly tester for an optimized LLVM build
    (the existing Linux/X86 tester runs a debug build).

Miscellaneous Changes:

22. Reid wrote the utils/llvmgrep script to make it easy to grep through
    the LLVM source code.
23. Reid fixed Value.h to no longer #include <iostream>.  This means
    compiles are faster, but you will probably have to add an explicit
    #include to .cpp files not in CVS.
24. Reid wrote the Support/SetVector.h file, which provides a vector-like
    object that does not allow duplicates to be inserted and supports
    an efficient member query operation.
25. Perhaps most importantly, Brian updated the picture of Bitter Melon
    on the demo page to a higher fidelity image!!

Here are some selected bugs fixed since the last status update:

C/C++ Front End: PR374, PR377, PR396
LLVM Core: PR391
Sparc: PR368
X86: PR366, PR369

... and here is the previous status update, just in case you forgot what
we did last time:

If you have any questions or comments about LLVM or the contents of this
status update, please feel free to email the llvmdev list!



More information about the llvm-announce mailing list