Login
Newsletter
Werbung

Fr, 5. September 2014, 09:10

Software::Entwicklung

LLVM 3.5 freigegeben

Version 3.5 des Compiler-Frameworks LLVM schwenkt auf einen internen Assembler um. Dank eines Beitrags von Apple kann LLVM jetzt Code für Apples iOS-Systeme generieren.

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.5 erhielt in den acht Monaten seit LLVM 3.4 viele neue Funktionen und Verbesserungen. Intern wird jetzt der MC-Asm-Printer verwendet, der frühere wurde entfernt. Es wird jetzt ein Assembler vorausgesetzt, der .loc für Debug-Informationen ausgeben kann. Die Möglichkeit, Debug-Info direkt auszugeben, wurde entfernt. Inline-Assembler-Code wird jetzt vom internen Assembler verarbeitet, sofern dieser aktiviert ist, was in der Regel der Fall ist.

Der Code-Generator für ARM nutzt jetzt den integrierten Assembler, der erweitert wurde, um einige der Direktiven des GNU-Assemblers zu unterstützen. Es gibt allerdings noch einige Direktiven, die er nicht unterstützt und wahrscheinlich nie unterstützen wird. In solchen Fällen muss ein externer Assembler verwendet werden. Außerdem wurde die Behandlung von Ausnahmen (EHABI) aktiviert.

Zahlreiche Verbesserungen gab es auch für die MIPS-Architektur. So werden jetzt MIPS32r6 und MIPS64r6 unterstützt, die signifikante Modernisierungen für MIPS bringen. Experimentell werden die Prozessoren MIPS-IV, cnMIPS und Cavium Octeon unterstützt. Außerdem wurden weitere 32- und 64-Bit-Programmiermodelle (ABIs) integriert. Umfangreich waren auch die Änderungen in der AArch64-Architektur, in die eine Menge Code integriert wurde, den Apple für iOS entwickelt hatte. Der generierte Code soll nun schneller sein, zudem kann Code für iOS compiliert werden.

Clang, das C/C++-Frontend von LLVM, kann sich jetzt auch auf Sparc64 unter Linux oder FreeBSD selbst compilieren. Zur Erzeugung von Windows-Programmen mit dem MingW-ABI wird jetzt das ABI von GCC 4.7 verwendet, das sich von dem von GCC 4.6 und früher unterscheidet. Das Ergebnis von __has_attribute hängt nun vom Zielsystem ab. OpenMP 3.1 wird nun vollständig, OpenMP 4.0 teilweise unterstützt.

Die Fehlermeldungen von Clang 3.5 wurden weiter verbessert. Einige Compiler-Optionen wurden angepasst. Der kommende C++-Standard, der 2017 erscheinen soll, wird bereits jetzt optional unterstützt. Zwar sind die Neuerungen noch keineswegs endgültig definiert, aber einige der vorgeschlagenen Neuerungen sind in Clang schon verfügbar.

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

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