Login
Newsletter
Werbung

Fr, 20. September 2019, 09:59

Software::Entwicklung

LLVM 9.0 freigegeben

Version 9.0 des Compiler-Frameworks LLVM, das unter anderem den C/C++-Compiler Clang enthält, bringt viele Verbesserungen, unter anderem bei der Code-Generierung und Optimierung.

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, die auch für Forschungen im Bereich von Compilern, Architekturen, Sicherheit und Betriebssystemen verwendet wird.

LLVM 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 9.0 erscheint gegenüber dem sechsmonatigen Veröffentlichungszyklus etwas verspätet. Die neue Version führt einige weitere Code-Optimierungen ein. Programme, die Konstrukte mit laut C/C++-Standard undefiniertem Verhalten nutzen, können durch die neuen Optimierungen Fehlverhalten an den Tag legen.

Eine der größten Neuerungen in LLVM 9 ist, dass die RISC V-Architektur nicht mehr experimentell ist. Unterstützt werden die Basis-Instruktionen für RV32I und RV64I sowie der MAFDC-Erweiterungen. Sowohl bei 32 als auch bei 64 Bit werden die Hard-Float und Soft-Float-Binärschnittstellen unterstützt. Neuerungen bei 64 Bit ARM sind die Scalable Vector Extension 2 (SVE2) und Memory Tagging Extensions (MTE). Bei 32 Bit ARM kam die Armv8.1-M-Architektur mit der M-Profile Vector Extension (MVE) hinzu. Außerdem wurde ein Pipeline-Modell für Cortex-M4 hinzugefügt, von dem auch Cortex-M3, SC300, Cortex-M33 and Cortex-M35P profitieren. SystemZ erhielt Unterstützung für die Architektur arch13 und neue Vektorinstruktionen. Verbesserungen gab es auch bei MIPS, PowerPC, x86 und AMDGPU.

Der neue Fortran-Compiler F18 ist noch nicht Bestandteil der Veröffentlichung. Zahlreiche Verbesserungen gab es beim Linker lld, in libc++, den zusätzlichen Werkzeugen einschließlich clang-tidy und im C/C++-Compiler Clang. Letzterer erhielt neue Optionen für die Code-Erzeugung und das neue Makro __FILE_NAME__, das im Gegensatz zu __FILE__ die letzte Pfadkomponente mitliefert, wenn möglich. Eine anfängliche Unterstützung für die in GCC vorhandenen asm goto-Anweisungen ermöglicht es den Linux-Kernel für x86_64 komplett mit Clang zu compilieren. Auf anderen Architekturen ließ sich Linux schon zuvor mit Clang compilieren. Die größte einzelne Änderung in Clang ist dagegen wohl die Unterstützung für C++ for OpenCL.

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