Arbeiten an LLVM 3.2 abgeschlossen
Die neueste Version der Compiler-Infrastruktur LLVM ist fertiggestellt und bringt unter anderem einen Loop Vectorizer, eine neue SROA-Implementierung und einen Ersatz für das bisherige PTX-Back-End.
- Julia Schmidt
Ein paar Tage nach dem ursprünglich angekündigten Termin haben die Entwickler die Compiler-Infrastruktur LLVM 3.2 für fertig erklärt. In der aktuellen Version konnten neben einigen Kleinigkeiten auch größere Neuerungen umgesetzt werden: So wurde etwa ein Loop Vectorizer eingeführt, der auch mit kleinen Schleifen umgehen kann. Der Vektorisierer ist standardmäßig ausgestellt und lässt sich mit -mllvm -vectorize-loops aktivieren.
Zudem haben die Entwickler das Modul "Scalar Replacement of Aggregates" (SROA) neu geschrieben, damit es nun Code produziert, der sich besser im Optimierungsprozess bearbeiten lässt. In der Vergangenheit hatte es Probleme bei der Skalierung gegeben, die nun durch die Verwendung anderer Algorithmen nicht mehr auftreten sollten. Eine weitere Neuerung ist ein NVPTX-Back-End, dass mit dem LLVM-Back-End arbeitet, welches von der Firma NVIDIA in deren CUDA- (nvcc) und OpenCL-Compilern verwendet wird. Es soll als Ersatz für das PTX-Back-End dienen, womit es wohl vollständig kompatibel ist, und unterstützt NVVM-Eigenschaften, wie sie im NVIDIA Compiler SDK festgeschrieben sind.
Verbessert wurden unter anderem auch Clang, das C/C++/Objective-C Frontend Toolkit, und das GCC-Plug-in DragonEgg. Der Schwerpunkt lag hier vor allem auf den Diagnostik-Funktionen für ersteres und der Option LLVM-Plug-ins wie Polly zu laden beim Compiler-Plug-in.
Eine ausführliche Liste aller Änderungen lässt sich den Release Notes entnehmen, der LLVM-Quellcode steht im Download-Verzeichnis des Projekts bereit und ist unter der University of Illinois Open Source License lizenziert.
Siehe dazu auch:
- Low Level Virtual Machine (LLVM) im heise Software-Verzeichnis