292
I Use This!
Very High Activity

News

Analyzed about 13 hours ago. based on code collected about 18 hours ago.
Posted over 15 years ago by Chris Lattner
Hi Everyone, LLVM 2.4 is now officially released! You can download it from http://llvm.org/releases/ or view the release notes here: http://llvm.org/releases/2.4/docs/ReleaseNotes.html LLVM 2.4 includes many bug fixes, much faster compile times at ... [More] -O0, substantially better code generation in various cases, a new PIC16 target, new IR features, and numerous other improvements and features (see the release notes for details). In addition to a great release, in August we had the 2nd annual LLVM Developer's Meeting, with about 120 attendees. From this meeting, we had a number of great presentations and in person discussions. If you missed it, slides and videos of the talks are available here: http://llvm.org/devmtg/2008-08/ If you have any questions or comments about this release, please contact the LLVMdev mailing list (llvmdev at cs.uiuc.edu)! -Chris Previous Announcement (LLVM 2.3): http://lists.cs.uiuc.edu/pipermail/llvm-announce/2008-June/000027.html [Less]
Posted almost 16 years ago by Ted Kremenek
Posted almost 16 years ago by ×óçù
hello everyone, I'm wondering whether llvm can work together with simplescalar. Would anyone please give me some clarification? Thanks a lot!
Posted almost 16 years ago by Chris Lattner
Hi Everyone, LLVM 2.3 is now officially released! You can download it from http://llvm.org/releases/ or view the release notes here: http://llvm.org/releases/2.3/docs/ReleaseNotes.html LLVM 2.3 includes many bug fixes, vastly improved support ... [More] for the X86-64 ABI, support for SSE 4.1 on X86 chips, support for functions that return multiple results in memory, a new 'llvmc' tool, support for atomic operations, improved gfortran support, and many new and improved optimizer and code generator passes. Overall, LLVM 2.3 generates significantly better code in less time than LLVM 2.2, which was released less than 4 months ago - an amazing rate of progress. Please see the release notes for more details. A new addition to the LLVM family is "vmkit". vmkit is an implementation of a Java Virtual Machine and a CLI Virtual Machine (".NET") that use the Just-In-Time compiler of LLVM, as well as many facilities provided by the LLVM framework. The VMs have similar performance to industrial and top open-source VMs, thanks to the LLVM JIT and optimization passes. vmkit is not included as part of LLVM 2.3, but is available from the LLVM SVN server under the standard LLVM license. Planning for the 2008 LLVM Developer Meeting is well underway for August 1, 2008 in Cupertino, CA, USA. If you are interested in attending, please see http://llvm.org/devmtg/ details. If you have any questions or comments about this release, please contact the LLVMdev mailing list (llvmdev at cs.uiuc.edu)! -Chris Previous Announcement (LLVM 2.2): http://lists.cs.uiuc.edu/pipermail/llvm-announce/2008-February/000025.html [Less]
Posted about 16 years ago by Chris Lattner
Hi All, LLVM 2.2 is done! Download it here: http://llvm.org/releases/ or view the release notes: http://llvm.org/releases/2.2/docs/ReleaseNotes.html LLVM 2.2 includes hundreds of bug fixes, many improvements to llvm-gcc 4.2 (which is now the ... [More] recommended front-end), a new (beta) Cell SPU backend, and a large variety of optimizer and codegen changes that allow LLVM 2.2 to produce even better code than before. LLVM 2.2 has compiled many millions of lines of C, C and Objective C code, and the llvm-gcc 4.2 Ada and Fortran front-ends are even starting to work. The LLVM 2.2 release notes contain a fairly complete discussion of the major improvements in this release, but two may be particularly interesting for a broader audience: First, this is the last release to support llvm-gcc 4.0. We recommend that you upgrade to 4.2 in LLVM 2.2 . Second, we now include a new tutorial aimed at language designers. Read it online here: http://llvm.org/docs/tutorial/ In other news, we are in early planning stages for the 2008 LLVM Developer Meeting. The 2007 Developer Meeting ( http://llvm.org/devmtg/2007-05/ ) was an extremely valuable way for LLVM developers to meet each other and talk about their interests and priorities. At this point, we are tentatively planning the 2008 meeting for late summer (July or August) in the Cupertino, CA area. For more information, please contact the llvmdev mailing list. This release is the result of hundreds of great contributions by many people, far too many to list here. I'm happy to say that LLVM has a strong and thriving community, consisting of dozens of people that are driving a whole new generation of open source compiler technology forward. To all contributors: thank you! If you have any questions or comments, please contact the LLVMdev mailing list (llvmdev at cs.uiuc.edu)! -Chris Previous Announcement (LLVM 2.1): http://lists.cs.uiuc.edu/pipermail/llvm-announce/2007-September/000024.html [Less]
Posted about 16 years ago by Chris Lattner
Hi All, LLVM 2.2 is done! Download it here: http://llvm.org/releases/ or view the release notes: http://llvm.org/releases/2.2/docs/ReleaseNotes.html LLVM 2.2 includes hundreds of bug fixes, many improvements to llvm-gcc 4.2 (which is now the ... [More] recommended front-end), a new (beta) Cell SPU backend, and a large variety of optimizer and codegen changes that allow LLVM 2.2 to produce even better code than before. LLVM 2.2 has compiled many millions of lines of C, C++ and Objective C code, and the llvm-gcc 4.2 Ada and Fortran front-ends are even starting to work. The LLVM 2.2 release notes contain a fairly complete discussion of the major improvements in this release, but two may be particularly interesting for a broader audience: First, this is the last release to support llvm-gcc 4.0. We recommend that you upgrade to 4.2 in LLVM 2.2+. Second, we now include a new tutorial aimed at language designers. Read it online here: http://llvm.org/docs/tutorial/ In other news, we are in early planning stages for the 2008 LLVM Developer Meeting. The 2007 Developer Meeting ( http://llvm.org/devmtg/2007-05/ ) was an extremely valuable way for LLVM developers to meet each other and talk about their interests and priorities. At this point, we are tentatively planning the 2008 meeting for late summer (July or August) in the Cupertino, CA area. For more information, please contact the llvmdev mailing list. This release is the result of hundreds of great contributions by many people, far too many to list here. I'm happy to say that LLVM has a strong and thriving community, consisting of dozens of people that are driving a whole new generation of open source compiler technology forward. To all contributors: thank you! If you have any questions or comments, please contact the LLVMdev mailing list (llvmdev at cs.uiuc.edu)! -Chris Previous Announcement (LLVM 2.1): http://lists.cs.uiuc.edu/pipermail/llvm-announce/2007-September/000024.html [Less]
Posted over 16 years ago by Chris Lattner
Hi All, LLVM 2.1 is done! Download it here: http://llvm.org/releases/ or view the release notes: http://llvm.org/releases/2.1/docs/ ReleaseNotes.html The LLVM 2.1 has many improvements, including three new front-ends, a huge reduction in -O3 ... [More] compile times, a new (beta) MIPS backend, and many optimizer/code generator changes that allow LLVM to produce better code. In addition to new features, LLVM 2.1 includes a large number of bug fixes found by compiling a huge number of applications, OS kernels, and very large open source projects. Organizationally, the LLVM 2.1 cycle is memorable for several reasons. In this release we switched from CVS to SVN, moved llvm-gcc to the main LLVM server (it used to be in a private repository which was mirrored publicly once a day), and grew the community very rapidly: we added many new commiters. Another interesting metric is the the main LLVM repository (not counting llvm-gcc or other separate projects) crossed 500,000 lines of code: http://llvm.org/nightlytest/ locgraph.php?xsize=900&ysize=600 . One of the highlights of this release cycle was the ability for many of us to get together to meet face to face at the 2007 LLVM Developer Meeting: http://llvm.org/devmtg/2007-05/ . If you're interested, many great talks about LLVM are available on that page, including a great section where everyone introduces themselves to the world :). In the end, the most exciting thing about the LLVM project is seeing all the ways that people apply the technology and having happy users. If you're currently using LLVM for nifty things (http:// llvm.cs.uiuc.edu/Users.html) or are writing papers (http://llvm.org/ pubs/), please let us know. Over this release we added a number of interesting publications, but I am certain that we're missing some. If you're using LLVM please let us know - it's free advertising for you and your work. :) Instead of including a list of the major features in this announcement as I normally do, I'll point you to the LLVM 2.1 release notes [ http://llvm.org/docs/ReleaseNotes.html#whatsnew ] which includes the high-level items. This release wouldn't be possible without many people in the LLVM community: building new features, reporting bugs, testing the pre- release bits, and contributing in many other ways. Tanya deserves many thanks in particular for doing a great job with release management, which is often a thankless task. If you have any questions or comments, please contact the LLVMdev mailing list (llvmdev at cs.uiuc.edu)! -Chris Previous Announcement (LLVM 2.0): http://lists.cs.uiuc.edu/pipermail/llvm-announce/2007-May/000023.html [Less]
Posted almost 17 years ago by Chris Lattner
LLVM 2.0 is done! Download it here: http://llvm.org/releases/ or view the release notes: http://llvm.org/releases/2.0/docs/ReleaseNotes.html LLVM 2.0 is a great release in many ways. It includes a wide range of new features, new optimizations ... [More] , better codegen, and new targets. We were also able to signficantly revise several core aspects of the LLVM IR and design (such as the type system and bytecode format) based on lessons learned in the LLVM 1.x series. One of the most exciting aspects of this release is seeing the strength of the community and the adoption that LLVM is receiving. LLVM continues to be used for a broad variety of academic research projects (e.g. see http://llvm.org/pubs/ ), but is also being used for a wide range of commercial products and industrial development projects (see http://llvm.org/Users.html ). We're seeing many different groups using LLVM for very different purposes, many of which we never envisioned :). In any case, LLVM 2.0 includes a huge number of new features. I list the significant changes from February below, but there were also another 42 changes in February that are also a part of LLVM 2.0 (see the link below). Here we go!: New Features: 1. Reid and Sheng contributed IR, optimizer, and interpreter support for arbitrary bitwidth integers which have sizes > 64 bits. This means that LLVM IR can now express operations on 31337-bit wide integers, for example (however, for most people, 128-bit wide integers on 64-bit targets will be the most useful new integer type). Currently neither llvm-gcc nor the native code generators support non-standard width integers yet though. 2. The LLVM 1.x "bytecode" format has been replaced with a completely new binary representation, named 'bitcode'. Because we plan to maintain binary compatibility between LLVM 2.x ".bc" files, this is an important change to get right. Bitcode brings a number of advantages to the LLVM over the old bytecode format. It is denser (files are smaller), more extensible, requires less memory to read, is easier to keep backwards compatible (so LLVM 2.5 will read 2.0 .bc files), and has many other nice features. Please see http://llvm.org/docs/BitCodeFormat.html for more details. 3. Christopher Lamb added support for alignment values on load and store instructions, finishing off PR400. This allows the IR to express loads that are not sufficiently aligned (e.g. due to '#pragma packed') or to capture extra alignment information. 4. Roman Samoilov contributed a new MSIL backend to LLVM. llc -march=msil will now turn LLVM into MSIL (".net") bytecode. This is still fairly early development with a number of limitations. 5. Lauro implemented support for Thread Local Storage with the __thread keyword, and added codegen support for Linux on X86 and ARM. Some front-end pieces will land in LLVM 2.1 though. 6. Anton and Lauro implemented support for 'protected visibility' in ELF. 7. Anton implemented support for ELF symbol aliases. 8. Reid contributed support for 'polymorphic intrinsics', allowing things like llvm.ctpop to work on arbitrary width integers. llvm-gcc Improvements: 9. Duncan Sands contributed many enhancements to llvm-gcc, some of which are language independent and others that are aimed towards better Ada support. He made improvements to NON_LVALUE_EXPR, arrays with non-zero base, structs with variable sized fields, VIEW_CONVERT_EXPR, CEIL_DIV_EXPR, and many other things. 10. Devang, Duncan and Andrew all contributed many patches to improve "attribute packed" support in the CFE, and handle many other obscure struct layout cases correctly. Optimizer Improvements: 11. Devang implemented support for a new LoopPass class, implemented passmanager support for it, and converted existing loop transforms to use it. See: http://llvm.org/docs/WritingAnLLVMPass.html#LoopPass 12. Devang contributed a new loop rotation pass, which converts "for loops" into "do/while loops", where the condition is at the bottom of the loop. 13. Devang added support that allows ModulePasses to use the result of FunctionPasses. This requires holding multiple FunctionPasses (e.g. dominator info) in memory at a time. 14. Owen and Devang both worked to eliminate the [Post]DominatorSet classes from LLVM, switching clients to use the far-more-efficient ETForest class instead. Owen removed the ImmediateDominator class, switching clients to use DominatorTree instead. These changes reduce memory usage and speed up the optimizer. Target-Independent Code Generator Enhancements: 15. Jim, Anton and Duncan contributed many enhancements and improvements to C++/Ada zero-cost DWARF exception handling support. While it is not yet solid, it is mostly complete and just in need of continued bug fixes and optimizations at this point. Jim wrote http://llvm.org/docs/ExceptionHandling.html to describe the approach. 16. Many bugfixes and other improvements have been made to inline asm support. The two large missing features are support for 80-bit floating point stack registers on X86 (PR879), and support for inline asm in the C backend (PR802). If you run into other issues, please report them. 17. Evan implemented a new register scavenger, which is useful for finding free registers after register allocation. This is useful when rewriting frame references on RISC targets, for example. 18. LLVM now supports describing target calling conventions explicitly in .td files, reducing the amount of C++ code that needs to be written for a port. 19. Evan contributed heuristics to avoid coallescing virtregs with very large live ranges to physregs. This effectively pinned the physreg for the entire live range of the virtreg, which was very bad for code quality. 20. Evan implemented support for very simple (but still very useful) rematerialization in the register allocator, enough to move instructions like "load immediate" and constant pool loads. 21. Anton significantly improved 'switch' lowering, improving codegen for sparse switches that have dense subregions, and implemented support for the shift/and trick. 22. The code generator now has more accurate and general hooks for describing addressing modes ("isLegalAddressingMode") to optimizations like loop strength reduction and code sinking. 23. Dale and Evan contributed several improvements to the Loop Strength Reduction pass, and added support for sinking expressions across blocks to reduce register pressure. 24. Evan added support for tracking physreg sub-registers and super-registers in the code generator, as well as extensive register allocator changes to track them. 25. Nate contributed initial support for virtreg sub-registers. See PR1350 for more information. Target-Specific Code Generator Enhancements: 26. Nicolas Geoffray contributed support for the Linux/ppc ABI, and the linux/ppc JIT is fully functional now. llvm-gcc and static compilation are not fully supported yet though. 27. Bill contributed support for the X86 MMX instruction set. 28. Dale contributed many enhancements to the ARM constant island pass, making ARM codegen significantly better for large functions. 29. Anton fixed several bugs in DWARF debug emission on linux and cygwin/mingw. Debugging basically works on these targets now. 30. Lauro contributed support for the ARM AAPCS/EABI ABI and PIC codegen on arm/linux. 31. Dale implemented more aggressive size analysis for ARM inline asm strings. 32. Raul Herbster contributed fixes for DWARF debug info generation on arm/linux. Other Improvements: 33. Anton and Reid are working to migrate from CVS to SVN in June: See http://llvm.org/SVNMigration.html This will allow us to host llvm-gcc and llvm in the same repository again! 34. Lauro contributed support to llvm-test for running on low-memory or slow machines (make SMALL_PROBLEM_SIZE=1). 35. Jeff contributed many portability fixes to the llvm-test testsuite, and has done a great job keeping llvm itself building with MS Visual Studio. In addition to the features above, this this release also includes hundreds of bug fixes, minor optimization improvements, compile-time speedups, etc. LLVM has literally compiled millions of lines of code in several different environments. For example, Anton has found that LLVM successfully (and correctly!) builds Qt 4.3rc1, Mozilla/Seamonkey, koffice, etc out of the box on linux/x86. Also, be sure to glance through the February update, which includes a bunch of other new features and big changes that are also included in 2.0: http://lists.cs.uiuc.edu/pipermail/llvm-announce/2007-February/000021.html This release wouldn't be possible without many people in the LLVM community: building new features, reporting bugs, testing the pre-release bits, and contributing in many other ways. Tanya (our release manager) deserves a lot of credit for this being the smoothest and best release so far, as well keeping our releases coming out on time! If you have any questions or comments, please contact the LLVMdev mailing list (llvmdev at cs.uiuc.edu)! -Chris [Less]
Posted almost 17 years ago by Chris Lattner
LLVM 2.0 is done! Download it here: http://llvm.org/releases/ or view the release notes: http://llvm.org/releases/2.0/docs/ReleaseNotes.html LLVM 2.0 is a great release in many ways. It includes a wide range of new features, new optimizations ... [More] , better codegen, and new targets. We were also able to signficantly revise several core aspects of the LLVM IR and design (such as the type system and bytecode format) based on lessons learned in the LLVM 1.x series. One of the most exciting aspects of this release is seeing the strength of the community and the adoption that LLVM is receiving. LLVM continues to be used for a broad variety of academic research projects (e.g. see http://llvm.org/pubs/ ), but is also being used for a wide range of commercial products and industrial development projects (see http://llvm.org/Users.html ). We're seeing many different groups using LLVM for very different purposes, many of which we never envisioned :). In any case, LLVM 2.0 includes a huge number of new features. I list the significant changes from February below, but there were also another 42 changes in February that are also a part of LLVM 2.0 (see the link below). Here we go!: New Features: 1. Reid and Sheng contributed IR, optimizer, and interpreter support for arbitrary bitwidth integers which have sizes > 64 bits. This means that LLVM IR can now express operations on 31337-bit wide integers, for example (however, for most people, 128-bit wide integers on 64-bit targets will be the most useful new integer type). Currently neither llvm-gcc nor the native code generators support non-standard width integers yet though. 2. The LLVM 1.x "bytecode" format has been replaced with a completely new binary representation, named 'bitcode'. Because we plan to maintain binary compatibility between LLVM 2.x ".bc" files, this is an important change to get right. Bitcode brings a number of advantages to the LLVM over the old bytecode format. It is denser (files are smaller), more extensible, requires less memory to read, is easier to keep backwards compatible (so LLVM 2.5 will read 2.0 .bc files), and has many other nice features. Please see http://llvm.org/docs/BitCodeFormat.html for more details. 3. Christopher Lamb added support for alignment values on load and store instructions, finishing off PR400. This allows the IR to express loads that are not sufficiently aligned (e.g. due to '#pragma packed') or to capture extra alignment information. 4. Roman Samoilov contributed a new MSIL backend to LLVM. llc -march=msil will now turn LLVM into MSIL (".net") bytecode. This is still fairly early development with a number of limitations. 5. Lauro implemented support for Thread Local Storage with the __thread keyword, and added codegen support for Linux on X86 and ARM. Some front-end pieces will land in LLVM 2.1 though. 6. Anton and Lauro implemented support for 'protected visibility' in ELF. 7. Anton implemented support for ELF symbol aliases. 8. Reid contributed support for 'polymorphic intrinsics', allowing things like llvm.ctpop to work on arbitrary width integers. llvm-gcc Improvements: 9. Duncan Sands contributed many enhancements to llvm-gcc, some of which are language independent and others that are aimed towards better Ada support. He made improvements to NON_LVALUE_EXPR, arrays with non-zero base, structs with variable sized fields, VIEW_CONVERT_EXPR, CEIL_DIV_EXPR, and many other things. 10. Devang, Duncan and Andrew all contributed many patches to improve "attribute packed" support in the CFE, and handle many other obscure struct layout cases correctly. Optimizer Improvements: 11. Devang implemented support for a new LoopPass class, implemented passmanager support for it, and converted existing loop transforms to use it. See: http://llvm.org/docs/WritingAnLLVMPass.html#LoopPass 12. Devang contributed a new loop rotation pass, which converts "for loops" into "do/while loops", where the condition is at the bottom of the loop. 13. Devang added support that allows ModulePasses to use the result of FunctionPasses. This requires holding multiple FunctionPasses (e.g. dominator info) in memory at a time. 14. Owen and Devang both worked to eliminate the [Post]DominatorSet classes from LLVM, switching clients to use the far-more-efficient ETForest class instead. Owen removed the ImmediateDominator class, switching clients to use DominatorTree instead. These changes reduce memory usage and speed up the optimizer. Target-Independent Code Generator Enhancements: 15. Jim, Anton and Duncan contributed many enhancements and improvements to C /Ada zero-cost DWARF exception handling support. While it is not yet solid, it is mostly complete and just in need of continued bug fixes and optimizations at this point. Jim wrote http://llvm.org/docs/ExceptionHandling.html to describe the approach. 16. Many bugfixes and other improvements have been made to inline asm support. The two large missing features are support for 80-bit floating point stack registers on X86 (PR879), and support for inline asm in the C backend (PR802). If you run into other issues, please report them. 17. Evan implemented a new register scavenger, which is useful for finding free registers after register allocation. This is useful when rewriting frame references on RISC targets, for example. 18. LLVM now supports describing target calling conventions explicitly in .td files, reducing the amount of C code that needs to be written for a port. 19. Evan contributed heuristics to avoid coallescing virtregs with very large live ranges to physregs. This effectively pinned the physreg for the entire live range of the virtreg, which was very bad for code quality. 20. Evan implemented support for very simple (but still very useful) rematerialization in the register allocator, enough to move instructions like "load immediate" and constant pool loads. 21. Anton significantly improved 'switch' lowering, improving codegen for sparse switches that have dense subregions, and implemented support for the shift/and trick. 22. The code generator now has more accurate and general hooks for describing addressing modes ("isLegalAddressingMode") to optimizations like loop strength reduction and code sinking. 23. Dale and Evan contributed several improvements to the Loop Strength Reduction pass, and added support for sinking expressions across blocks to reduce register pressure. 24. Evan added support for tracking physreg sub-registers and super-registers in the code generator, as well as extensive register allocator changes to track them. 25. Nate contributed initial support for virtreg sub-registers. See PR1350 for more information. Target-Specific Code Generator Enhancements: 26. Nicolas Geoffray contributed support for the Linux/ppc ABI, and the linux/ppc JIT is fully functional now. llvm-gcc and static compilation are not fully supported yet though. 27. Bill contributed support for the X86 MMX instruction set. 28. Dale contributed many enhancements to the ARM constant island pass, making ARM codegen significantly better for large functions. 29. Anton fixed several bugs in DWARF debug emission on linux and cygwin/mingw. Debugging basically works on these targets now. 30. Lauro contributed support for the ARM AAPCS/EABI ABI and PIC codegen on arm/linux. 31. Dale implemented more aggressive size analysis for ARM inline asm strings. 32. Raul Herbster contributed fixes for DWARF debug info generation on arm/linux. Other Improvements: 33. Anton and Reid are working to migrate from CVS to SVN in June: See http://llvm.org/SVNMigration.html This will allow us to host llvm-gcc and llvm in the same repository again! 34. Lauro contributed support to llvm-test for running on low-memory or slow machines (make SMALL_PROBLEM_SIZE=1). 35. Jeff contributed many portability fixes to the llvm-test testsuite, and has done a great job keeping llvm itself building with MS Visual Studio. In addition to the features above, this this release also includes hundreds of bug fixes, minor optimization improvements, compile-time speedups, etc. LLVM has literally compiled millions of lines of code in several different environments. For example, Anton has found that LLVM successfully (and correctly!) builds Qt 4.3rc1, Mozilla/Seamonkey, koffice, etc out of the box on linux/x86. Also, be sure to glance through the February update, which includes a bunch of other new features and big changes that are also included in 2.0: http://lists.cs.uiuc.edu/pipermail/llvm-announce/2007-February/000021.html This release wouldn't be possible without many people in the LLVM community: building new features, reporting bugs, testing the pre-release bits, and contributing in many other ways. Tanya (our release manager) deserves a lot of credit for this being the smoothest and best release so far, as well keeping our releases coming out on time! If you have any questions or comments, please contact the LLVMdev mailing list (llvmdev at cs.uiuc.edu)! -Chris [Less]
Posted about 17 years ago by Chris Lattner
Hi Everyone, The LLVM community is growing in exciting ways, and we decided it would be great to get together and meet each other. As such, we're organizing an LLVM developer meeting in Cupertino, CA. If you are interested in LLVM, would like ... [More] to learn more, or would like to talk with some of the developers, please consider coming. More detail (including an early itinerary) can be found on the web page: http://llvm.org/DevMtgMay2007.html If you have any questions, please email the llvmdev mailing list! -Chris [Less]