Compilerinfrastruktur: LLVM 7.0 mit neuen Werkzeugen

Die LLVM- und Clang-Entwickler waren fleißig und wissen mit etlichen neuen Tools, kleinen Feinheiten und breiter Plattformabdeckung aufzuwarten.

In Pocket speichern vorlesen Druckansicht 5 Kommentare lesen
Compilerinfrastruktur: LLVM 7.0 mit neuen Werkzeugen
Lesezeit: 2 Min.
Von
  • Alexander Neumann

Rund alle sechs Monate erscheint ein neues Release der LLVM-Compilerarchitektur samt ihres Clang-Compilers. Die nun freigegebene Version 7.0 beider Projekte ist das jüngste Release. Beide Projekte haben etliche Neuerungen spendiert bekommen.

Als Highlights dürfen die Erweiterungen des AMDGPU-Backends, das neue llvm-mca-Werkzeug, die fortwährenden Arbeiten an der Spectre-Sicherheitslücke (Speculative Load Hardening), die Einführung von OpenCL C++, die Multi-Versionierung von Funktionen (FMV) für Clang und das mit OpenMP 4.5 spezifizierte Offloading bei Nvidias NVPTX-Backend gelten.

Der Windows-Installer enthält keine Visual-Studio-Integration mehr. Stattdessen ist eine neue Visual-Studio-Erweiterung der LLVM Compiler Toolchain im Visual Studio Marketplace verfügbar. Die neue Integration unterstützt Visual Studio 2017. Bibliotheken wurden von 7.0 auf 7 umbenannt. Diese Änderung betrifft auch Downstream-Bibliotheken wie lldb.

llvm-mca ist ein neues Tool zur statischen Performanceanalyse, das die in LLVM verfügbaren Informationen verwendet, um die Leistung von Maschinencode für eine bestimmte CPU statisch vorherzusagen. Ein neues Tool ist außerdem llvm-exegesis. Es misst automatisch die Scheduling-Eigenschaften der Befehle und bietet eine Möglichkeit, Scheduling-Modelle zu bearbeiten.

Das LLVM-Hexagon-Target kann nun automatisch bei HVX (Hexagon Vector Extensions) vektorisieren (mit -fvectorize). Das AMDGPU-Backend verfügt jetzt über Vega-20-Unterstützung, einschließlich der neuen Deep-Learning-Instruktionen. Zusätzlich werden auch Vega-12-GPUs bedient.

Der neueste Sanitizer in Clang ist der Implicit Conversion Sanitizer, der über -fsanitize = implicit-conversion verfügbar ist. Dann ist von Unterstützung für den Undefined Behavior Sanitizer unter OpenBSD sowie den Memory Sanitizer unter FreeBSD die Rede. Neu ist auch das Clang-Diagnosetool diagtool. Clang unterstützt jetzt Function Multi-Versioning (FMV) unter Verwendung des Attributziels für das ELF-basierte x86/x86_64-System. Diese Ergänzung ist weitgehend kompatibel mit GCCs langjähriger FMV-Implementierung.

Die hier gebrachten Neuerungen stellen nur eine Auswahl dar. Detaillierte Informationen und einen Einblick in viele andere Neuerungen bekommen Entwickler in den Release Notes. Die für Clang finden die Leser hier. Einen Einblick auf das, was dann mit LLVM 8.0 erscheinen soll, geben die Entwickler hier. (ane)