ErLLVM: an LLVM backend for Erlang

This paper describes ErLLVM, a new backend for the HiPE compiler, the native code compiler of Erlang/OTP, that targets the LLVM compiler infrastructure. Besides presenting the overall architecture of ErLLVM and its integration in Erlang/OTP, we describe the changes to LLVM that ErLLVM required and discuss technical challenges and decisions we took. Finally, we provide a detailed performance evaluation of ErLLVM compared to BEAM, the existing backends of the HiPE compiler, and Erjang.

[1]  Vivek Sarkar,et al.  Linear scan register allocation , 1999, TOPL.

[2]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[3]  Soo-Mook Moon,et al.  Optimistic register coalescing , 1998, Proceedings. 1998 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.98EX192).

[4]  Julia L. Lawall,et al.  VMKit: a substrate for managed runtime environments , 2010, VEE '10.

[5]  Mikael Pettersson,et al.  The HiPE/x86 Erlang Compiler: System Description and Performance Evaluation , 2002, FLOPS.

[6]  Mikael Pettersson,et al.  Efficiently compiling a functional language on AMD64: the HiPE experience , 2005, PPDP '05.

[7]  Manuel M. T. Chakravarty,et al.  An llVM backend for GHC , 2010, Haskell.

[8]  Konstantinos Sagonas,et al.  Heap architectures for concurrent languages using message passing , 2002, ISMM '02.

[9]  Andrew W. Appel,et al.  Iterated register coalescing , 1996, TOPL.

[10]  Mikael Pettersson,et al.  The development of the HiPE system: design and experience report , 2003, International Journal on Software Tools for Technology Transfer.

[11]  Chris Lattner,et al.  LLVM: AN INFRASTRUCTURE FOR MULTI-STAGE OPTIMIZATION , 2000 .

[12]  Konstantinos Sagonas,et al.  Experimental evaluation and improvements to linear scan register allocation , 2003, Softw. Pract. Exp..

[13]  Keith D. Cooper,et al.  Improvements to graph coloring register allocation , 1994, TOPL.