Quels sont les plus grands avantages de LLVM?

Est-ce que quelqu’un a de l’expérience avec LLVM , llvm-gcc ou Clang ?

L’idée derrière llvm me semble très insortinggante et je suis intéressée par son rendement. Je ne veux pas perdre beaucoup de temps à essayer les outils si les outils ne sont pas prêts pour la production.

Si vous avez de l’expérience avec les outils, que pensez-vous d’eux? Quelles sont les principales limitations rencontrées? Quels sont les plus grands avantages?

Merci beaucoup!

J’ai eu un premier jeu avec LLVM et le fait de travailler avec ce didacticiel m’a laissé très enthousiasmé par son potentiel; L’idée que je peux l’utiliser pour construire un JIT dans une application avec une facilité relative m’a convaincu.

Je ne suis pas allé assez loin pour pouvoir offrir un avis utile sur ses limites, sa stabilité, ses performances et autres. Je comprends que c’est bon à tous égards, mais c’est uniquement du ouï-dire.

Je ne peux pas en dire assez sur LLVM. Il est si facile de travailler avec d’autres projets de compilateur que j’ai examinés. Je ne suis pas un compilateur, mais quand je suis frustré par certaines limitations de LLVM ou de clang, il est généralement assez facile de le faire et de le changer.

Nous (Nate Begeman, moi-même et quelques autres) avons écrit le backend PPC sans réelle expérience en conception de compilateur, mais il semblait assez simple pour que des non-experts puissent l’approcher. Nous étions assez familiers avec l’assemblage de PPC, mais c’était quand même assez incroyable, nous avons réussi à obtenir le code PPC de LLVM-gcc en quelques semaines de notre temps libre. Certainement l’un des Hello World les plus satisfaisants que j’ai jamais compilés.

Je joue avec LLVM depuis plusieurs mois maintenant. J’ai écrit deux articles dans OCaml Journal sur l’utilisation de LLVM à partir du langage de programmation OCaml . Cela est particulièrement intéressant car le langage OCaml est idéal pour écrire des compilateurs et possède une multitude d’outils et de bibliothèques puissants et matures pour l’parsing, etc.

Dans l’ensemble, mon expérience a été extrêmement positive. LLVM fait ce qu’il dit sur l’étain 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 petit compilateur Brainf * ck qui génère certains des exécutables les plus rapides de tous les compilateurs que j’ai testés (y compris GCC).

Je n’ai que deux reproches avec LLVM. Tout d’abord, il utilise abort () chaque fois que quelque chose ne va pas au lieu de générer une exception. C’était une décision délibérée de ses auteurs qui s’efforcent de supprimer toutes les utilisations des exceptions de LLVM, mais il est impossible d’obtenir des backtraces d’OCaml lors du débogage d’un compilateur utilisant LLVM: votre programme meurt avec une explication textuelle mais aucun indice quant à l’endroit où l’erreur s’est produite dans votre source. Deuxièmement, la bibliothèque compilée de LLVM est monstrueusement grande (20 Mo). Je suppose que cela est dû à l’inconvénient de C ++, mais cela rend la compilation très lente.

EDIT: Mon travail sur LLVM a abouti à la création d’une machine virtuelle de haut niveau à haut niveau de récupération de place. Téléchargement gratuit ici et consultez les benchmarks correspondants (wow!). @ Alex: Je vais obtenir ce compilateur BF quelque part ASAP.

Vous avez posé des questions sur les outils et j’aimerais mentionner qu’il existe un plugin LLVM pour Eclipse CDT (pour Windows, Linux et Mac). Il intègre joliment LLVM à IDE et l’utilisateur n’a pas besoin de savoir quoi que ce soit sur LLVM. Appuyer sur le bouton de construction suffit pour produire des fichiers .bc et exécutables (et des fichiers intermédiaires sur l’arrière-plan non visibles pour l’utilisateur).

La dernière version est disponible via le site officiel de mise à jour d’Eclipse: http://download.eclipse.org/releases/mars

Il se trouve sous Langages de programmation et s’appelle “C / C ++ LLVM-Famille Comstackr Build Support”.