Stand der Arbeiten am Windows-Support für LLVM/Clang

Entwickler Warren Hunt informiert auf dem Blog der Compilerinfrastruktur LLVM über den Fortschritt, den das Projekt in letzter Zeit bei Clang für den Bau nativer, Visual-C++-kompatibler Windows-Programme gemacht hat.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 2 Min.
Von
  • Julia Schmidt

Im LLVM-Projekt halten die Bemühungen, Clang auch für native Windows-Programme einsetzen zu können, weiter an. In den vergangenen Monaten gab es in diesem Bereich viele Verbesserungen, sodass nun alle C++-Funktionen außer Debug-Informationen und Exceptions gut funktionieren sollten. In einem Blogbeitrag führt Entwickler Warren Hunt genau auf, was sich seit Februar alles getan hat und welche zum Teil tiefgreifenden Veränderungen an LLVM-Komponenten dafür vorzunehmen waren.

Nach ausführlichen Tests stehen beispielsweise mit Microsofts Visual C++ kompatible Record Layouts zur Verfügung, die das Nutzen von Komponenten wie virtuellen Basistabellenzeigern, vtordisps, _declspec(align) und #pragma pack ermöglichen. Die Schwierigkeiten bei der Umsetzung waren hier häufig die Interaktionen der Funktionen untereinander, da sie in dem Punkt von ihren GCC-Äkquivalenten abwichen. Darüber hinaus kann Clang nun auch mit den Calling-Konventionen bis Visual Studio 2012 umgehen – in VS 2013 gibt es einige Neuerungen, die das Team noch angehen muss.

Fundamentale Änderungen der Intermediate Representation vom LLVM waren nötig, um C++-Objekte nach Wert auf x86-Systemen mit 32 Bit zu übergeben. Diese werden unter Windows direkt in den Argumentenspeicher geschrieben, der für den Funktionsaufruf zum Einsatz kommt, was sich nicht mit der zuvor genutzten Modellierung als Static Single Assignment in LLVM vereinen ließ. Zu den aktuellsten Neuerungen zählen der Support für C++11-Lambdas und Run Time Type Information (RTTI), durch den mehr Programme und Bibliotheken ohne Fallback kompilieren können und dynamic_cast sowie typeid nun funktionieren sollten. (jul)