Login
Newsletter
Werbung

Mo, 5. September 2016, 11:51

Software::Entwicklung

LLVM 3.9 freigegeben

Version 3.9 des Compiler-Frameworks LLVM bringt viele Verbesserungen, unter anderem bei der Code-Optimierung während des Linkens, der Code-Generierung, den Fehlermeldungen, der Kompatibilität mit GCC und bei OpenCL.

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.9 erscheint sechs Monate nach LLVM 3.8 mit vielen neuen Funktionen und Verbesserungen. Die Generierung von LLVM und seinen Werkzeugen erfolgt jetzt mit cmake anstelle der Autotools. Der globale Kontext in LLVM wurde entfernt und es gab einige weitere Änderungen am internen LLVM-API.

Die wohl bedeutendste Änderung ist die Implementation von ThinLTO, einem Verfahren zur Beschleunigung der Code-Optimierung während des Linkens. ThinLTO verringert auch den Speicherbedarf von LTO drastisch, und zwar um über 90%. ThinLTO kann mit Linkern genutzt werden, die das unterstützen, darunter Linker mit Gold-Plugin und ld64. Außerdem unterstützt LLVM nun das GCC-ABI, das aufgrund seiner Neuheit für LLVM 3.8 zu spät kam. Das soll die Kompatibilität mit libstdc++ wieder herstellen, so dass diese mit Clang ebenso wie mit GCC genutzt werden kann.

Die Code-Generierung für verschiedene Architekturen wurde weiter verbessert. Dazu kamen bei der AArch64-Architektur die Unterstützung für spezielle Befehle der Chips Kryo von Qualcomm und Vulcan von Broadcom, bei der x64_64-Architektur die Unterstützung für erweiterte AVX-512-Befehle von Intels Skylake Server und Knights Landing. Die Unterstützung für ARM Cortex-R8 wurde begonnen. Die AMDGPU-Architektur unterstützt nun die OpenGL-Erweiterungen Shader Image, Buffer Storage, Atomic Counter und Compute Shader und benötigt daher Mesa 12, während Mesa 11 nicht mehr genügt. Weitere Informationen enthalten die Anmerkungen zur Veröffentlichung.

Der mit LLVM kommende C-, C++- und Objective C-Compiler Clang gibt dem Linker standardmäßig nicht mehr die Option --build-id mit, die relativ aufwendig ist. Desweiteren gab es verbesserte Fehlermeldungen und Warnungen, Thread-lokaler Speicher in Cygwin, komplette Unterstützung aller Funktionalität von OpenCL, Unterstützung aller Funktionalität von OpenMP 4.5 mit Ausnahme der Offloading-Funktionen und zahlreiche weitere Verbesserungen.

Die Prüfungen in clang-tidy wurden nochmals ausgeweitet. Fortschritte gab es auch beim Linker LLD.

Der Download von LLVM 3.9.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