Compiler-Infrastruktur LLVM 3.5 freigegeben

Das zweite Release des Jahres wartet unter anderem mit Änderungen im ARM-Backend sowie für MIPS- und AArch64-Architekturen auf. Auch in Sachen Clang auf Windows hat sich einiges getan.

In Pocket speichern vorlesen Druckansicht 12 Kommentare lesen
Lesezeit: 3 Min.
Von
  • Julia Schmidt

Die Version 3.5 der Compiler-Infrastruktur LLVM steht nun zum Download bereit. Neben den Verbesserungen, die die Entwickler für den Bau nativer und zu Visual C++ kompatibler Windows-Programme einbringen konnten, hatten sie für dieses Release unter anderem auch Zeit genug, die Features des ARM-Backends zu testen und zu überarbeiten, bei denen es bei der vorigen Veröffentlichung zu Anfang des Jahres noch nicht zur Produktionsreife gereicht hatte.

So kommt es etwa, dass ARM Exeption Handling (EHABI) nun per Default aktiviert ist und die Projektmitarbeiter die vorher notwendigen Zuschaltoptionen -arm-enable-ehabi sowie -arm-enable-ehabi-descriptors entfernt haben. Ähnliches gilt für den integrierten Assembler (IAS), der nun auch standardmäßig eingeschaltet ist und mit ausgewählten GNU-Erweiterungen und -Direktiven ausgestattet wurde. Die Bemühungen, etwas besser mit den Konkurrenten der GNU Compiler Collection (GCC) zusammenzuarbeiten, zeigen sich im Übrigen unter anderem auch in der Umarbeitung der Backends, die Atomic NAND(x,y) als x & ~y umsetzen. Durch das Umstellen auf Implementierungen über ~(x & y), entsprechen sie nun der Semantik von GCC 4.4 und den folgenden Versionen.

Darüber hinaus gab es einige Verbesserungen für Zielsysteme, die mit der MIPS-Architektur arbeiten. Darunter fallen beispielsweise der Support für MIPS32r6 und MIPS64r6 sowie experimentelle Unterstützung für MIPS -IV, cnMIPS und Cavium Octeon CPUs. Der MIPS Integrated Assembler enthält einen neu geschriebenen Assembly Parser, der allerdings noch nicht für den breiten Einsatz gedacht ist und daher mit -fintegrated-as freizuschalten ist. Die Application Binary Interfaces (ABI) konnten um eine Implementierung der N32 ABI ergänzt werden, im Gegensatz zur GCC bleibt allerdings die N64 ABI die Standardeinstellung.

Nachdem Apple den Code zum Generieren von 64-Bit-ARM-Programmen für iOS-Plattformen freigegeben hatte, entschieden sich die LLVM-Entwickler dafür, ihn als Grundlage für eine Vereinigung der beiden existierenden Backends (ARM64 und AArch64) zu nutzen. Als Grund führen sie sein Alter an und dass es gründlich getestet ist. Im April und Mai wurden die besten Features und Optimierungsmaßnahmen des alten LLVM-Backends eingebaut und mit der so entstandenen Kombination das alte AArch64 ersetzt. Der Name blieb allerdings bestehen, im Sinne der offiziellen ARM-Dokumentation.

Eine Liste der wichtigsten Änderungen findet sich in den Release Notes. Dort sind auch einige Open-Source-Projekten zu finden, die bereits so aktualisiert wurden, dass sie mit LLVM 3.5 arbeiten können. (jul)