GNU Compiler Collection 4.0 fertiggestellt

Michael Hass
27 Kommentare

Während derzeit noch auf den meisten Festplatten die schon ein Jahr alte GNU Compiler Collection (GCC) 3.4 ihren Dienst verrichtet, haben die Entwickler um die beliebteste der freien Compiler-Sammlungen ihren jüngsten Spross in der Version 4.0 fertiggestellt.

Erleichternd von den Entwicklern aufgenommen werden dürfte sicherlich die Tatsache, dass es trotz Geschwindigkeitssteigerungen sowohl beim Compilieren als auch beim Ausführen des Codes nur relativ wenige inkompatible Veränderungen zum Vorgänger gibt. Je nachdem welche der neuen Optionen beim Kompilieren eingesetzt werden erfolgt das Kompilieren von C++-Code bis zu 25% schneller als mit Version 3.4. Auch die Qualität und somit Performance des erstellten Codes konnte verbessert werden, wobei das Potenzial des neuen Optimierungs-Frameworks TreeSSA („Static Single Assignment“) aktuell kaum ausgenutzt wird. Da dieses das Implementieren von Optimierungen vereinfacht darf man mit weiteren Performance-Verbesserungen in zukünftigen Versionen rechnen.

Aber auch an anderer Stelle wurde weitergearbeitet. So wurden zum Beispiel dem Frontend von Fortran nun auch eine Unterstützung von Fortran 90 und Fortran 95 implementiert. Zudem wurden die Frontends von Java und Ada verbessert. Bei speziellen Kommandozeilen-Optionen, einigen Architekturen und bei Fehlermeldungen wurden zudem noch Verbesserungen integriert.

Ein weiteres Highlight von Version 4.0 ist ein neue Optimierungsmethode namens „skalare Ersetzung und Aggregation“. Diese ermöglicht das Aufspalten größerer Code-Blöcke, so dass diese Teile dann im wesentlich schnelleren Prozessor-Cache geparkt werden können, anstatt sie wie bisher üblich im vergleichsweise gähnend langsamen Hauptspeicher abzulegen. Mit Hilfe dieser neuen Funktion soll die GCC in der Lage sein, das Programm als Ganzes zu erfassen anstatt nur einzelne Teilbereiche zu optimieren.

Ein Ausblick auf die nächste Version 4.1 verspricht als Neuerung unter anderem Autovectorization. Diese wird erst ermöglicht durch das erwähnte TreeSSA-Optimierungs-Framework und beschleunigt das Anwenden ein- und derselben Instruktion auf multiple Datenelemente wie z.B. Elemente eines Arrays. Dies soll insbesondere beim Optimieren von Quellcode für PC-Spiele wichtig sein, zielt jedoch auch auf Anwendungen im Bereich Supercomputing ab.

Weitere Details zur neuen Version lassen sich im Changelog nachlesen.