Je joue avec LLVM depuis plusieurs mois maintenant. J'ai écrit deux articles OCaml Journal couvrant l'utilisation de LLVM du langage de programmation OCaml. Cela est particulièrement intéressant car le langage OCaml est idéal pour l'écriture de compilateurs et dispose d'une multitude d'outils et de bibliothèques puissants et matures pour l'analyse syntaxique, etc. Dans l'ensemble, mon expérience a été extrêmement positive. LLVM fait ce qu'il dit sur la boîte et est très facile à utiliser. La performance du code généré est superbe. L'un des programmes que j'ai écrits était un simple compilateur Brainf * ck qui génère quelques-uns des exécutables les plus rapides de tous les compilateurs que j'ai testés (y compris GCC).
Je n'ai que deux poignées avec LLVM. Premièrement, il utilise avort() chaque fois que quelque chose se passe mal au lieu de déclencher une exception. Cela a été une décision de conception délibérée de ses auteurs qui tentent de supprimer toutes les utilisations des exceptions de LLVM mais il est impossible d'obtenir des backtraces d'OCaml en essayant de déboguer un compilateur qui utilise LLVM: votre programme meurt simplement avec une explication textuelle de LLVM mais aucune idée de l'endroit où l'erreur s'est produite dans votre source. Deuxièmement, la bibliothèque compilée de LLVM est monstrueusement grande (20Mb). Je suppose que cela est dû à la surchauffe subie par C++ mais cela rend la compilation péniblement lente.
EDIT: Mon travail sur LLVM a débouché sur la création d'une machine virtuelle de haut niveau à haut niveau de récupération de données. Téléchargement gratuit here et consultez le correspondant benchmarks (wow!). @Alex: Je vais obtenir ce compilateur BF pour vous quelque part dès que possible.
J'ai écrit le document suivant qui traite des avantages de LLVM. http://llvm4eclipsecdt.googlecode.com/files/Benefits%20of%20the%20LLVM%20compiler%20infrastructure.pdf –