LLVM Compiler Infrastructure -- Release 1.0
We are pleased to announce the public release of the LLVM Compiler
Infrastructure under a non-restrictive open source license.
WHAT IS LLVM?
LLVM is a new infrastructure designed for compile-time, link-time, runtime,
and "idle-time" optimization of programs from arbitrary programming
languages. LLVM is written in C++ and has been developed over the past 3
years at the University of Illinois. It currently supports compilation of
C and C++ programs, using front-ends derived from GCC 3.4. New front-ends
are being written for Java bytecode and CAML.
WHO WILL FIND THIS RELEASE USEFUL?
o Compiler researchers interested in compile-time, link-time
(interprocedural) and runtime transformations for C and C++ programs.
o Virtual machine researchers/developers interested in a portable,
language-independent instruction set and compilation framework.
o Architecture researchers interested in compiler/hardware techniques.
o Security researchers interested in static analysis or instrumentation.
o Instructors (or anyone else) interested in a system for quick
prototyping of compiler transformations.
HOW LONG DOES IT TAKE TO GET STARTED WITH LLVM?
We have found that new users can install LLVM and write their first LLVM
pass in hours, and start sophisticated projects using LLVM within days.
WHY IS LLVM USEFUL?
LLVM uses a low-level, RISC-like, language-independent representation to
analyze and optimize programs. Key features include explicit control
flow, dataflow (SSA), and a language-independent type system that can
capture the _operational behavior_ of high-level languages. The LLVM
representation is low-level enough to represent arbitrary application and
system code, yet is powerful enough to support aggressive "high-level"
transformations. The LLVM infrastructure uses this representation to
allow these optimizations to occur at compile-time, link-time and runtime.
WHAT IS INCLUDED IN THIS RELEASE?
Release 1.0 is intended to be a fully functional release of our compiler
system for C and C++. As such, it includes the following:
o Front-ends for C and C++ based on GCC 3.4, supporting the full
ANSI-standard C and C++ languages, plus many GCC extensions.
o A wide range of global scalar optimizations
o A link-time interprocedural optimization framework, with a rich
set of analyses and transformations, including sophisticated
whole-program pointer analysis and call graph construction.
o Native code generators for x86 and Sparc
o A JIT code generation system for x86 and Sparc
o A C back-end, useful for testing and to support other targets
o A test framework with a number of benchmark codes and some applications
o APIs and debugging tools to simplify rapid development
WHAT IS NOT INCLUDED IN THIS RELEASE?
Some components are not yet implemented in LLVM, including array dependence
analysis, dependence-based transformations, profiling support, and a
trace-based dynamic optimization system. The native code generators are
not yet competitive with vendor compilers in performance.
HOW DO I GET IT?
Please see: http://llvm.cs.uiuc.edu/releases (*)