I haven't looked at LLVM since its first release, and following your post I took a new look and see that there has been quite a lot of evolution. I think it would be interesting to have a LLVM back-end for Gambit, mainly because it would allow portable native code generation. Going to machine code (through LLVM) would avoid the use of trampolines (to implement tail calls), and this could have a significant impact on performance of multi-module programs. It would also have a significant impact on the compactness of the machine code generated (once again because the trampoline machinery could be avoided).
For fun I tried compiling Gambit with llvm-gcc on my Mac OS X machine using
% ./configure CC=llvm-gcc --enable-single-host % make
llvm-gcc is the gcc compiler version 4.2.1 with a code generator which goes through LLVM version 2.3.
The good news is that this works with the current Gambit v4.2.8 with only minor warnings (due to the configure script thinking the standard Mac OS X gcc is being used and passing it options that llvm-gcc knows nothing about).
The bad news is that the compile time is really high (10 minutes for some of the larger C files like lib/_num.c and lib/_io.c) and the execution speed if often lower than when using the standard gcc. Perhaps that's just because my standard gcc is version 4.0.1 and the compiler's optimization algorithms are different. Also, for an unknown reason, I/O is particularly slow. For your information I have made a table of benchmarks comparing the execution time for various settings (compiling with standard gcc and -O1, -O2, and -O3, and compiling with llvm-gcc). The table is at http://www.iro.umontreal.ca/~feeley/bench-llvm-gcc.html .
The poor performance obtained with llvm-gcc does not mean that a LLVM back-end for Gambit would yield poor performance. However it does point to some aspects which are a source of concern, and need to be looked into.
If anyone is interested in contributing to implement an LLVM back-end for Gambit, please send me an email. I can guide you through the steps required.
Marc
On 21-Sep-08, at 10:41 AM, Andrew I. Schein wrote:
Hi all -
I am wondering if there are any efforts underway to port gambit to a llvm back end? Would this provide opportunity to eliminate a trampoline, at least in certain cases?
-A
-- web: www.andrewschein.com
Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list