Open Source im professionellen Einsatz

LLVM 3.8 rangiert viele Funktionen aus

09.03.2016

Die LLVM Compiler Infrastructure ist in Version 3.8 erschienen. Sie verabschiedet sich von alten Windows-Versionen, tauscht Autoconf gegen Cmake ein und rangiert verschiedene C-API-Funktionen aus. Für die Plattformen gibt es ebenfalls zahlreiche Änderungen.

398

Den Wechsel von Autoconf auf Cmake schließen die Entwickler mit der aktuellen Version ab. In Version 3.9 wollen sie das Autoconf-Buildsystem komplett entfernen. Nutzer von Windows XP und Vista können LLVM 3.8 nicht mehr einsetzen, lediglich auf Windows 7 läuft die Infrastruktur.

Zu den nicht mehr nutzbaren Funktionen gehören "LLVMLinkModules", "LLVMParseBitcode", "LLVMParseBitcodeInContext", "LLVMGetBitcodeModuleInContext" sowie "LLVMGetBitcodeModule". Sie werden in Version 3.9 entfernt, Entwickler sollten zu den entsprechenden Versionen mit dem Suffix "2" wechseln. Andere Funktionen wurden bereit ausrangiert, etwa "LLVMGetBitcodeModuleProviderInContext", "LLVMGetBitcodeModuleProvider", "LLVMCreateExecutionEngine", "LLVMCreateInterpreter", "LLVMCreateJITCompiler", "LLVMAddModuleProvider" und "LLVMRemoveModuleProvider". Zugleich erstellt "llvm" die Bereiche ".data.rel.ro.local" oder ".data.rel" nicht mehr.

Zugleich haben die Entwickler die C-API-Header umorganisiert, um die Buildzeiten zu beschleunigen. Typspezifische Deklarationen stecken jetzt in der "Type.h", Routinen zum Umgang mit Fehlern in der "ErrorHandling.h". "llvm-ar" unterstützt nun Thin Archives, die nur einen Symbolindex und Referenzen auf die Originalkopien der im Archiv gelagerten Dateien enthalten.

Optional lassen sich Clang und die LLVM-Tools nun mit einer einzigen libLLVM-Shared-Library verlinken, wozu der Entwickler den Cmake-Parameter "-DLLVM_LINK_LLVM_DYLIB" auf "ON" stellen muss. Neu an Bord ist ein Target-unabhängiger, GCC-kompatibel emulierter Thread-Local-Storage-Modus. Ist die "-femultated-tls"-Flag im Einsatz, konvertiert LLVM alle Zugriffe auf TLS-Variablen in Calls auf "__emutls_get_address" in der Runtime-Bibliothek. Nicht zuletzt haben die LLVM-Entwickler die MSVC-kompatible Ausnahmebehandlung um neue Instruktionen erweitert. Die seien aber noch nicht komplett durchgetestet, geben die Entwickler in den Release Notes zu.

Änderungen gibt es auch für ARM und Mips-Backends. Für ARM gibt es massive Performance-Verbesserungen dank einer vollständig unterstützten Stride-Vektorisierung. Der Support für den Debugger LLDB wurde ausgebaut. Der Load/Store-Optimierer wurde ausgeweitete und aufgeräumt. Zugleich erzeugt LLVM weniger Code für die Adressen globaler Variablen in ELF.

Auf Mips erweitert LLVM die Unterstützung für den integrierten Assembler, Open CL, das Interrupt-Attribut sowie die ERETNC-Instruktionen für Mips32R2. Außerdem bringt LLVM hier Support für den P5600-Prozessor mit. Die Adressräume von 1 bis 255 sind nun für Software reserviert.
Eine ausführliche Darstellung sämtlicher Änderungen und Bugfixes an LLVM 3.8 auch für weitere Plattformen liefern die Release Notes.

Ähnliche Artikel

  • LLVM 3.9 bringt Optimierungen

    Die Entwickler der LLVM-Compiler-Infrastruktur (Low Level Virtual Machine) haben mit der nun veröffentlichten Version 3.9 unter anderem an der Zusammenarbeit des Frameworks mit GCC und OpenCL gearbeitet.

  • LLVM erreicht Version 3.4

    Ein größerer Release von LLVM ist erschienen. Version 3.4 bringt eine einige neue Features mit, kündigt Chris Lattner auf der Announce-Mailingliste an.

  • LLVM-Compiler 2.8 mit ISO-Standards

    In Version 2.8 implementiert das LLVM-Compiler-Framework die ISO-1998- und -2003-Standards für C++.

  • Minix 3.3.0 verfügbar

    Microkernel-Fan Andrew S. Tanenbaum hat Minix 3.3.0 angekündigt und weist auf einige neue Features hin.

  • LLVM 3.5 ist verfügbar

    Die Entwickler der LLVM-Compiler-Infrastruktur (Low Level Virtual Machine) haben Version 3.5 in die freie Wildbahn entlassen, die Änderungen für verschiedene Plattformen an Bord hat, darunter ARM und MIPS.

comments powered by Disqus

Ausgabe 01/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.