Ich habe seit vielen Monaten mit LLVM ein- und ausgeschaltet. Ich schrieb zwei OCaml Journal Artikel über die Verwendung von LLVM aus der OCaml Programmiersprache. Das ist besonders interessant, weil die OCaml-Sprache ideal zum Schreiben von Compilern ist und eine Fülle von leistungsfähigen und ausgereiften Werkzeugen und Bibliotheken zum Parsen usw. aufweist.
Insgesamt war meine Erfahrung äußerst positiv. LLVM macht was es verspricht und ist sehr einfach zu bedienen. Die Leistung des generierten Codes ist hervorragend. Eines der Programme, das ich geschrieben habe, war ein einfacher kleiner Brainf * ck-Compiler, der einige der schnellsten ausführbaren Dateien eines Compilers erzeugt, den ich getestet habe (einschließlich GCC).
Ich habe nur zwei Klagen mit LLVM. Erstens verwendet es abort() immer dann, wenn etwas schief geht, anstatt eine Ausnahme auszulösen. Dies war eine bewusste Designentscheidung der Autoren, die alle Ausnahmen von LLVM entfernen möchten, aber es unmöglich machen, OCAML zurückzuverfolgen, wenn man einen Compiler mit LLVM debuggt: Ihr Programm stirbt einfach mit einer textlichen Erklärung von LLVM aber keine Ahnung, wo der Fehler in Ihrer Quelle aufgetreten ist. Zweitens ist die kompilierte Bibliothek von LLVM monströs groß (20 MB). Ich nehme an, dies liegt an dem Aufblähen von C++, aber es macht die Kompilierung schmerzhaft langsam.
EDIT: Meine Arbeit an LLVM gipfelte in der Erstellung einer High-Performance High-Level-Garbage-Collected Virtual Machine. Kostenloser Download here und überprüfen Sie die entsprechenden benchmarks (wow!). @Alex: Ich werde den BF-Compiler so schnell wie möglich für dich holen.
Ich habe das folgende Dokument geschrieben, das die Vorteile von LLVM diskutiert. http://llvm4eclipsecdt.googlecode.com/files/Benefits%20of%20the%20LLVM%20compiler%20infrastructure.pdf –