I have run into an interesting issue with LLVM when I enabled global optimizations in XLR. It looks like the link-time optimization passes (LTO) in LLVM are not too friendly to incremental recompilation.
The recent factoring on the XLR version of XL was intended to make it easier to maintain, but also to significantly accelerate it. Results are in, and they are amazing. XLR now handily beats unoptimized C code, being within 15% of optimized C code.
I am currently working on a rather serious refactoring of the XLR compiler. The objectives are the following:
A number of changes happen in the compiler structure as a result:
Contextclass is gone
Errorsclasses) were deeply redefined.
Ooopsis now in
errors.hwhere it belonged.
This is now well under way.
LLVM stands for Low-Level Virtual Machine.
The LLVM project (http://llvm.org) is a collection of modular and reusable compiler and toolchain technologies. It started as a research project at the University of Illinois.
It is used in XLR as a back-end for dynamic code generation.
There are several XL compilers, but they all follow the same basic architecture: