[erlang-questions] Low Level Virtual Machine (LLVM) for optimization across the intire lifetime of a program

Roger Larsson roger.larsson@REDACTED
Wed Feb 13 22:34:44 CET 2008

Found this interesting report via lwn.net


From the home page http://llvm.org/

"A compilation strategy designed to enable effective program optimization 
across the entire lifetime of a program. LLVM supports effective optimization 
at compile time, link-time (particularly interprocedural), run-time and 
offline (i.e., after software is installed), while remaining transparent to 
developers and maintaining compatibility with existing build scripts.

A virtual instruction set - LLVM is a low-level object code representation 
that uses simple RISC-like instructions, but provides rich, 
language-independent, type information and dataflow (SSA) information about 
operands. This combination enables sophisticated transformations on object 
code, while remaining light-weight enough to be attached to the executable. 
This combination is key to allowing link-time, run-time, and offline 

A compiler infrastructure - LLVM is also a collection of source code that 
implements the language and compilation strategy. The primary components of 
the LLVM infrastructure are a GCC-based C & C++ front-end, a link-time 
optimization framework with a growing set of global and interprocedural 
analyses and transformations, static back-ends for the X86, X86-64, PowerPC 
32/64, ARM, Thumb, IA-64, Alpha and SPARC architectures, a back-end which 
emits portable C code, and a Just-In-Time compiler for X86, X86-64, PowerPC 
32/64 processors. 

LLVM does not imply things that you would expect from a high-level virtual 
machine. It does not require garbage collection or run-time code generation 
(In fact, LLVM makes a great static compiler!). Note that optional LLVM 
components can be used to build high-level virtual machines and other systems 
that need these services."

This sounds like a much better match for code generation than Java or CLI.
A suitable examination work?


More information about the erlang-questions mailing list