Was mich besonders an LLVM interessiert sind vor allem die Möglichkeiten zur Analyse von Fehlern die es bietet. Hier mal gcc und clang (ein C/C++/ObjC Frontend für LLVM) im Vergleich.
$ gcc-4.2 -fsyntax-only t.c
t.c:7: error: invalid operands to binary + (have 'int' and 'struct A')
$ clang -fsyntax-only t.c
t.c:7:39: error: invalid operands to binary expression ('int' and 'struct A')
return y + func(y ? ((SomeA.X + 40) + SomeA) / 42 + SomeA.X : SomeA.X);
~~~~~~~~~~~~~~ ^ ~~~~~
Clang nagelt den Fehler auf Zeile UND Spalte fest, nebenher verbraucht er zum kompilieren auch noch weniger Speicher und ist auch noch schneller. Ziemlich beeindruckend.
LLVM wird sicherlich den Compilermarkt in der Opensource Welt nachhaltig verändern. So gibt es z.B. Ambitionen FreeBSD komplett mit Clang anstelle von GCC zu übersetzen.
Auch die Rubyfraktion will von LLVM profitieren und so experimentiert das MacRuby-Projekt ebenfalls mit LLVM um Ruby auf dem Mac zu beschleunigen.
Für alle die jetzt neugierig geworden sind gibt es hier einen interessanten Tech Talk zum Thema, genauso wie einen Podcast vom Chaosradio Express
1 Kommentar:
Super! Gut, dass ich zufällig diesen Beitrag gesehen habe. War schon immer unzufrieden mit GCC und hatte auch schon in Erwägung gezogen, eine der Alternativen (TinyCC) um Funktionen zu erweitern. Werde meine Zeit dann lieber LLVM widmen. Danke nochmals! :)
Kommentar veröffentlichen