Question

Quelqu'un at-il une expérience avec LLVM , llvm-gcc ou Clang ?

L’idée de llvm me semble très intrigante et je suis curieux de voir comment il se comporte. Je ne veux tout simplement pas passer beaucoup de temps à essayer les outils qui ne sont pas prêts pour la production.

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

Merci beaucoup!

Était-ce utile?

La solution

J'ai eu un premier jeu avec LLVM et avec ce didacticiel à gauche moi très très excité pour son potentiel; L’idée que je puisse l’utiliser pour construire un JIT dans une application avec une relative facilité m’a ravi.

Je ne suis pas allé assez loin pour pouvoir donner un quelconque avis utile sur ses limitations, sa stabilité, ses performances, etc. Je comprends que ce soit une bonne chose à tous égards, mais que ce ne sont que des ouï-dire.

Autres conseils

Je ne peux pas dire assez de bonnes choses à propos de 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 plonger dedans et de le changer.

Nous (Nate Begeman, moi-même et quelques autres) avons écrit le backend PPC sans grande expérience de la conception de compilateurs, mais cela semblait assez simple pour que des non-experts puissent l’aborder. Nous connaissions assez bien l’assemblage PPC, mais c’était quand même incroyable que nous ayons réussi à obtenir du code PPC en sortie LLVM-gcc quelques semaines après notre temps libre. Certainement l’un des plus satisfaisants que j’ai jamais compilé pour Hello World.

Je joue avec LLVM par intermittence depuis plusieurs mois. J'ai écrit deux articles du Journal OCaml sur l'utilisation de la LLVM à partir de OCaml langage de programmation. C’est particulièrement intéressant car le langage OCaml est idéal pour écrire des compilateurs et dispose d’une profusion d’outils et de bibliothèques puissants et matures pour l’analyse, etc.

.

Dans l’ensemble, mon expérience a été extrêmement positive. LLVM fait ce qui est écrit et est très facile à utiliser. La performance du code généré est superbe. L’un des programmes que j’ai écrit est un simple 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 problèmes avec LLVM. Tout d'abord, il utilise abort () chaque fois que quelque chose ne va pas au lieu de déclencher une exception. C’était une décision délibérée de la part de ses auteurs, qui s’efforcent de supprimer toutes les utilisations des exceptions de LLVM, mais il est impossible d’obtenir des traces de retour d’OCaml lorsqu’on essaie de déboguer un compilateur utilisant LLVM: votre programme vient de mourir avec une explication textuelle de LLVM. 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û à la surcharge de C ++, mais rend la compilation extrêmement lente.

EDIT: Mon travail sur LLVM a abouti à la création d’une machine virtuelle hautes performances de haute performance collectée. Téléchargez gratuitement ici et consultez le points de repère (ouah!). @Alex: Je vais obtenir ce compilateur BF pour vous quelque part dès que possible.

Vous avez posé une question sur les outils et je voudrais mentionner qu’il existe un plug-in LLVM pour Eclipse CDT (pour Windows, Linux et Mac). Il intègre parfaitement LLVM à l'IDE et l'utilisateur n'a pas besoin de savoir quoi que ce soit à propos de LLVM. Il suffit d’appuyer sur le bouton de génération pour produire des fichiers .bc et exécutables (ainsi que des fichiers intermédiaires en arrière-plan non visibles pour l’utilisateur).

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

Il se trouve sous Langages de programmation et est nommé "Prise en charge de la construction du compilateur de la famille LLVM C / C ++".

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top