2008-10-05 10 views
45

Est-ce que quelqu'un a de l'expérience avec LLVM, llvm-gcc, ou Clang?Quels sont les plus grands avantages de LLVM?

L'idée derrière llvm me semble très intrigante et je suis curieux de voir comment elle fonctionne. Je ne veux tout simplement pas passer 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 limites que vous avez rencontrées? Quels sont les plus grands avantages?

Merci beaucoup!

+1

J'ai écrit le document suivant qui traite des avantages de LLVM. http://llvm4eclipsecdt.googlecode.com/files/Benefits%20of%20the%20LLVM%20compiler%20infrastructure.pdf –

Répondre

21

J'ai eu un premier jeu avec LLVM et de travailler à travers this tutorial m'a laissé très très excité au sujet de son potentiel; l'idée que je peux l'utiliser pour construire un JIT dans une application avec une relative facilité m'a attisé.

Je ne suis pas allé assez loin pour être capable d'offrir une opinion utile sur ses limitations, sa stabilité, ses performances et autres. Je comprends que c'est bon sur tous les points mais c'est purement ouï-dire.

39

Je ne peux pas dire assez de bonnes choses à propos de LLVM. Il est si facile de travailler avec par rapport à d'autres projets de compilateur que j'ai examinés. Je ne suis pas un compilateur, mais quand je suis frustré par une limitation de LLVM ou de clang, il est généralement assez facile de plonger et de le changer. Nous (Nate Begeman, moi-même et quelques autres) écrivions le backend PPC sans expérience réelle en conception de compilateur, mais il semblait assez simple que des non-experts puissent l'aborder. Nous étions assez familiers avec l'assemblage de PPC, mais c'était quand même assez incroyable que nous ayons réussi à obtenir le code PPC de LLVM-gcc dans quelques semaines de notre temps libre. Certainement l'un des Hello World's les plus satisfaisants que j'ai jamais compilés.

25

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.

+2

Pouvez-vous publier le compilateur BF? J'ai écrit un traducteur BF-> C qui, je pense, est à peu près aussi bon que vous pouvez obtenir en un seul passage, et llvm-gcc tombe très mal dans les très gros programmes. Ils sont un peu injustes, cependant. –

2

Vous avez posé des questions sur les outils et je voudrais mentionner qu'il existe un plugin LLVM pour Eclipse CDT (pour Windows, Linux et Mac). Il intègre bien LLVM à IDE et l'utilisateur n'a pas besoin de savoir quoi que ce soit à propos de LLVM.En appuyant sur le bouton de construction est suffisant pour produire des fichiers .bc et exécutables (et les fichiers intermédiaires sur l'arrière-plan ne sont pas visibles pour l'utilisateur).

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

Il est en langages de programmation et est nommé "C/C++ LLVM-famille compilateur Créer Support".

Questions connexes