LLVM Weekly 130: ThinLTO, LLVM 3.8.1 und neue Clang-Funktionen

Die offizielle Ausgabe von LLVM Weekly 130 vom 27. Juni 2016 fasst mehrere Änderungen rund um LLVM, Clang und die zugehörigen Projekte zusammen. Für Spiele- und Middleware-Teams sind vor allem die Fortschritte bei der Link-Time-Optimierung und im Compiler-Baukasten relevant.

Im Mittelpunkt steht ThinLTO. Die Variante nutzt kompakte Modulzusammenfassungen für globale Analysen im seriellen Link-Schritt. Funktionsimport und weitere Optimierungen folgen später pro Modul. Dadurch soll der Speicherbedarf großer LTO-Läufe sinken, während inkrementelle Builds weniger Arbeit wiederholen.

ThinLTO für große Builds

Das LLVM-Projekt hatte ThinLTO zuvor auf der EuroLLVM 2015 vorgestellt. Laut der technischen Beschreibung war die Implementierung inzwischen in LLVM für Gold und libLTO angekommen, die Abstimmung lief weiter. Erste Benchmarks lagen bei der Kompilierzeit nahe an einem Build ohne LTO, während ein Teil der Optimierungsvorteile von vollständigem LTO erhalten bleiben sollte. Für Spieleprojekte mit großen C++-Codebasen kann dieser Ansatz die Zeit zwischen einer Quelltextänderung und einem neuen Testlauf verkürzen.

Im selben Themenfeld beschreibt ein älterer Beitrag zu LLVM libFuzzer, wie Werkzeuge aus dem LLVM-Umfeld bereits für automatisierte Tests von Compilern eingesetzt wurden. Beide Themen betreffen unterschiedliche Phasen der Entwicklung: ThinLTO optimiert den Build, Fuzzing prüft die Werkzeuge und ihre Eingabeverarbeitung.

LLVM 3.8.1 und neue Clang-Funktionen

Die Ausgabe meldet außerdem, dass LLVM 3.8.1 final getaggt wurde. In Clang kam Unterstützung für constexpr if hinzu. Das Werkzeug clang-tidy erhielt eine Prüfung namens modernize-use-emplace, die bestimmte Aufrufe von push_back in emplace_back umwandeln kann. Die offiziellen Release Notes zu LLVM 3.8 dokumentieren zudem Änderungen an Plattformen, APIs und dem Build-System.

Weitere Punkte des Wochenrückblicks betreffen die Rückkehr der LLVM-Apt-Repositories, ein RFC zu präzisen Garbage-Collector-Referenzen sowie Verbesserungen an Speicheranalyse, Kontrollflussintegrität und dem Linker LLD. Der Schwerpunkt bleibt damit auf der Infrastruktur, die Compiler- und Build-Teams für größere C++-Projekte benötigen.

Weitere News

Weitere News

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein