Login
Newsletter
Werbung

Fr, 21. Dezember 2012, 14:24

Software::Entwicklung

LLVM 3.2 freigegeben

Version 3.2 des Compiler-Frameworks LLVM bringt gut ein halbes Jahr nach Version 3.1 zahlreiche Änderungen. Unter anderem wurde die Code-Optimierung weiter verbessert.

Das LLVM-Team an der University of Illinois in Urbana-Champaign bezeichnet LLVM als eine Compilier-Strategie für effektive Optimierung, einen virtuellen Befehlssatz und eine Compiler-Infrastruktur. Es wird zur Zeit für Forschungen im Bereich von Compilern, Architekturen, Sicherheit und Betriebssysteme verwendet.

LLVM (Low Level Virtual Machine) definiert einen virtuellen Befehlssatz, der an RISC-Maschinen angelehnt ist, aber reichhaltige Typinformation und Datenfluss-Information zur Verfügung stellt. Dies ermöglicht zum einen ausgefeilte Transformationen des Objektcodes, andererseits kann die Information an das ausführbare Programm angehängt werden. Dies erlaubt weitere Transformationen während des Linkens, zur Laufzeit und an der ausführbaren Datei selbst, während das Programm nicht läuft.

In Version 3.2 lernte der Optimierer, nicht zu komplizierte innere Schleifen so zu organisieren, dass Prozessoren mit Vektoreinheiten wie die x86_64-Familie pro Instruktion mehrere Daten gleichzeitig verarbeiten können. SROA (Scalar Replacement Of Aggregates) wurde neu geschrieben, so dass es wesentlich leistungsfähiger als zuvor ist. Die Generierung von Maschinencode wurde ebenfalls in vielen Punkten verbessert. Daneben wurden weitere Optimierungen eingeführt, die beispielsweise Speicher im Stack für mehrere Variablen nutzen, wenn deren Nutzung sich nicht überschneidet. Aufeinanderfolgende Lade- und Speicherinstruktionen werden kombiniert. Eine Reihe weiterer Verbesserungen betreffen die Code-Generatoren für ARM, MIPS und PowerPC.

Das PTX-Backend, das Code für Nvidia-Grafikchips generiert, wurde durch NVPTX ersetzt, welches von Nvidia in CUDA und von OpenCL verwendet wird. Clang, der Compiler für C, C++ und Objective C, gibt jetzt weiter verbesserte Fehlermeldungen, und man kann verschiedene Modelle für Thread-Local Storage (TLS) wählen. Es können Attribute gesetzt werden, die die Typsicherheit des Codes verbessern sollen. Clang unterstützt jetzt außerdem Dokumentations-Kommentare in einer Doxygen-ähnlichen Syntax. Zudem werden die meisten Features des Standards C++ 2011 unterstützt.

Neben diesen Änderungen gab es zahlreiche kleine Erweiterungen, Korrekturen und interne API-Änderungen. Weitere Informationen enthalten die Anmerkungen zur Veröffentlichung.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung