Compiler: LLVM und Clang 3.7 unterstützen jetzt auch OpenMP 3.1
Wie im Mai angekündigt, ist Version 3.7 der Compiler-Infrastruktur samt zugehörigem Frontend nun verfügbar. Sie umfasst unter anderem Änderungen an den MIPS- und PowerPC-Targets und einen Härtungsmechanismus.
![LLVM und Clang 3.7: OpenMP-3.1-Support unter den Neuerungen](https://heise.cloudimg.io/width/600/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/1/5/7/7/4/7/0/llvm-8fbdbbeebf5000da.png)
- Julia Schmidt
LLVM und das Clang-Frontend stehen rund ein halbes Jahr nach der Veröffentlichung der letzten Nebenversion in Version 3.7 zum Download bereit. Das Release ist laut seinen Entwicklern das letzte, das auf Windows XP und Vista laufen wird. Danach müssen Nutzer der Microsoft-Betriebssysteme mindestens Windows 7 installiert haben, um mit LLVM arbeiten zu können. Außerdem verlangt das Projekt nun Visual Studio 2013 Update 4 und höher, um unter Windows einen Build erzeugen zu können.
Tipps für Entwickler
In LLVM sind besonders viele Änderungen in die MIPS- und PowerPC-Targets geflossen, sodass ersteres nun unter anderem mit den Bibliotheken libcxx und libcxxabi sowie den Architekturen MIPS32R3, MIPS32R5, MIPS32R3, MIPS32R5 und microMIPS32 umgehen kann. Für PowerPC wurde zudem Support für das POWER8-Instruction-Set ISA 2.07B und IBMs Vektorinstruktionsset QPX integriert.
Nach dem Update ist die Angabe eines DataLayout nicht mehr optional sondern in Module zu setzen, da Optimierungen auf Ebene der Zwischendarstellung IR sie nun erwarten. Neu ist auch das Backend für das erweiterte Berkely Packet Filter Instruction Set und eine Dokumentationsseite, die Tipps für Frontend-Entwickler zum Erstellen von IR enthält, die sich gut optimieren lässt.
Control Flow Integrity
Seine Entwickler haben Clang unter anderem so ergänzt, dass es mit OpenMP 3.1 und einigen Elementen der darauf folgenden Hauptversion umgehen kann. Um diese Funktionen in Anspruch nehmen zu können, ist allerdings die Kommandozeilenoption -fopenmp=libomp zu nutzen, da das Feature standardmäßig deaktiviert ist. Soll die _declspec-Spracherweiterung zum Einsatz kommen, müssen Nutzer ab Version 3.7 entweder das -fms-extensions- oder -fborland-Compiler-Flag setzen.
Darüber hinaus verfügt Clang nun über eine Implementierung einiger Control-Flow-Integrity-Schemas. Sie sollen dafür sorgen, dass Programme abgebrochen werden, sobald sich bestimmte undefinierte Verhaltensweisen in ihm finden, die Angreifern eine Möglichkeit zur Manipulation des Kontrollflusses geben. (jul)