Login
Newsletter
Werbung

Mi, 9. März 2016, 11:10

Software::Entwicklung

LLVM 3.8 freigegeben

Version 3.8 des Compiler-Frameworks LLVM bringt viele Verbesserungen, unter anderem bei Thread-lokalem Speicher, der Code-Generierung, der statischen Analyse, den Fehlermeldungen und der Debugger-Unterstützung.

llvm.org

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.

LLVM 3.8 erscheint sechs Monate nach LLVM 3.7 mit vielen neuen Funktionen und Verbesserungen. Die generierten Binärdateien enthalten keine .data.rel.ro.local- oder .data.rel-Abschnitte mehr. llvm-ar unterstützt »dünne« Archive. Das Kaleidoscope-Tutorial wurde aktualisiert. Clang und die LLVM-Werkzeuge können jetzt optional mit der dynamischen Bibliothek libLLVM gelinkt werden. Eine Optimierung, die Anfang und Ende von Funktionen in weniger benutzte Code-Pfade legt (»shrink-wrapping« genannt), ist jetzt standardmäßig aktiv. Thread-lokaler Speicher kann jetzt in GCC-kompatibler Weise angelegt werden. Die MSVC-kompatible Ausnahmebehandlung wurde vollständig erneuert.

Die Code-Generierung für ARM, MIPS und PowerPC wurde wesentlich verbessert. Bei anderen Architekturen tat sich weniger. Bei x86 wurde unter anderem Thread-lokaler Speicher für Cygwin unter der Bezeichnung emutls aktiviert. Weitere Informationen enthalten die Anmerkungen zur Veröffentlichung.

Der mit LLVM kommende C-, C++- und Objective C-Compiler Clang erhielt weiter verbesserte Fehlermeldungen, die auch genauer auf die verursachende Stelle im Code hinweisen. Neue Compiler-Flags sind -ggdb, das die Debugging-Informationen für GDB optimiert, -glldb für den LLDB-Debugger, -gsce für den Sony Computer Entertainment Debugger und -fstrict-vtable-pointers für verbesserte Devirtualisierungs-Unterstützung, allerdings noch experimentell.

Die Anordnung von Daten im Speicher, die einigen Einfluss auf die Geschwindigkeit hat, wurde verbessert. Verbessert wurden auch __builtin_object_size und __attribute__((overloadable). Einige weitere Funktionen von OpenCL 2.0 wurden implementiert. OpenMP 3.1 wird vollständig unterstützt und weitere Funktionen von OpenMP 4.5 wurden implementiert. Auch CUDA wird, wenn auch noch experimentell, unterstützt. Die statische Code-Analyse kann mit den Programmen scan-build und scan-view jetzt separat aufgerufen werden. Die Anzahl der vorgenommenen Prüfungen wurde weiter gesteigert.

Der Download von LLVM 3.8.0 mit allen zugehörigen Werkzeugen ist von der Projektseite möglich. Es werden Quellcode-Pakete, Binärpakete und umfassende Dokumentation bereitgestellt.

Werbung
Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung