Do you think you need to write an interface for GCC ? I mention this solely for the sake of completeness - as far as I know, the backend interface is quite complex, and the code base is huge and hard to understand.
GCC, on the other hand, is a mature product that many experienced programmers work for. At the very least, it probably provides the most solid foundation for all alternatives.
Personally, I would prefer LLVM (exciting architecture) or .NETs IL: very, very easy to use, has excellent tool support ( Reflector , Cecil , Reflexil and last but not least, the .NET reflection API) and two very efficient implementations ( namely, the canonical implementation of Microsoft and Mono).
But I can not claim expertise in any of the architectures, so take this answer with salt.
source share