Am 3. Mai wurde die erste öffentliche Version 9.1 von GCC veröffentlicht.
Sie enthält zahlreiche wesentliche Verbesserungen und Ergänzungen im Vergleich zur achten
Version.
Allgemeine Änderungen
Optionen
- Befehle, die Größen akzeptieren, unterstützen nun 64-Bit-Werte und Suffixe zur Größenangabe;
- Option hinzugefügt -flive-patching, um Optimierungen zu steuern, die potenziell destruktiv für die dynamische Code-Ersetzung sind;
- Es wurde die Option —completion hinzugefügt, um die Auto-Vervollständigung in der Shell zu unterstützen;
- Die Compiler-Diagnosen enthalten nun Zeilennummern (-fno-diagnostics-show-line-numbers) und
Typinformationen (fno-diagnostics-show-labels); - Option hinzugefügt -fdiagnostics-format=json für die Ausgabe von Diagnosen im JSON-Format;
- Optionen zur Angabe der Ausrichtung (-falign-functions, zum Beispiel) können nun eine Kombination von Ausrichtungsoptionen annehmen;
- Es wurden Optionen zum Filtern der Dateiliste hinzugefügt (-fprofile-filter-files, -fprofile-exclude-files), die vom Profiler instrumentiert werden;
- AddressSanitizer verwendet nun eine kompaktere Ausrichtung, um ungültige Zugriffe auf Stapelvariablen zu erfassen;
- Zahlreiche Verbesserungen in der Ausgabe -fopt-info;
- Option hinzugefügt -fsave-optimization-record um den Bericht über Optimierungen in einer Datei zu speichern;
- Option hinzugefügt -fipa-stack-alignment und -fipa-reference-addressable.
Neue integrierte Funktionen
Neues Attribut
- copy.
Sonstiges
Zahlreiche Verbesserungen der Codeerzeugung im Zusammenhang mit:
- Switch-Konstruktionen generieren;
- zwischenprozeduralen Optimierungen;
- Optimierung basierend auf Profilinformationen;
- Optimierung in der Linkphase (LTO);
Das interne Format von gcov ist jetzt JSON, und die neue Option —use-hotness-colors ermöglicht die Farbgestaltung von Codezeilen basierend auf ihrer Nutzungshäufigkeit.
Sprachen
Qualität und Vollständigkeit der Implementierung OpenACC in C, C++ und Fortran wird weiterhin verbessert.
C-ähnliche Sprachen
- Teilweise Unterstützung von OpenMP 5.0 implementiert;
- Funktion hinzugefügt __builtin_convertvector;
- Eine Warnung wurde hinzugefügt -Waddress-of-packed-member;
- Verbesserungen bei mehreren bestehenden Warnungen;
- Die Fehlermeldung bei der Übergabe einer falschen Anzahl von Argumenten an ein Makro enthält jetzt die Deklaration des Makros selbst;
- Verbesserungen bei den Vorschlägen zur Korrektur von Tippfehlern.
C
- Unterstützung von _Static_assert mit einem Argument für -std=c2x (künftiger C-Standard);
- Eine neue Warnung -Wabsolute-value, die falsche Argumenttypen für Funktionen wie abs() erkennt.
C++
- Neue Warnungen: -Wdeprecated-copy,
-Winit-list-lifetime,
-Wredundant-move,
-Wpessimizing-move,
-Wclass-conversion; - Es wird an der Umsetzung neuer Funktionen aus dem zukünftigen Standard gearbeitet. C++ 2a;
- Das Frontend speichert jetzt genauere Informationen über eine Reihe von Quellcode-Elementen, was eine detailliertere Anzeige in Diagnosen ermöglicht.
- Die Diagnosen für überladene Funktionen, binäre Operatoren, Funktionsaufrufe und Formatzeichenfolgen wurden verbessert.
- Einige Entwicklungsumgebungen unterstützen automatische Korrekturen für eine Reihe von gängigen Fehlern (fehlende Klammern, Namensräume, Tippfehler usw.).
libstdc++
- Die Implementierung von C++17 ist nicht mehr experimentell.
- Es wurden parallele Algorithmen, , hinzugefügt, und benötigt nicht mehr -lstdc++fs.
- Die experimentelle Unterstützung von C++ 2a (, , std::bind_front usw.) wurde verbessert.
- Unterstützung für das Öffnen von Datei-Streams unter Windows, deren Pfade Zeichen außerhalb von char enthalten.
- Erste Unterstützung für unter Windows.
- Erste Unterstützung für Networking TS.
OS-Angriffen
Die D-Sprache Version 2.076 ist Teil von GCC.
Fortran
- Vollständige Unterstützung für asynchronen Input/Output.
- Das Argument BACK für MINLOC und MAXLOC wurde implementiert.
- Die Funktionen FINDLOC und IS_CONTIGUOUS wurden implementiert.
- Der Zugriffssyntax auf die Bestandteile komplexer Zahlen wurde implementiert: c%re und c%im;
- Die Syntax str%len und a%kind wurde implementiert;
- C-Deskriptoren und der Header ISO_Fortran_binding.h wurden implementiert;
- Die Anforderungen an die Rückgabewerte der Funktionen MAX und MIN wurden gelockert, wenn eines der Argumente NaN ist;
- Option hinzugefügt -fdec-include;
- Eine neue Direktive wurde hinzugefügt BUILTIN.
libgccjit
- Funktion hinzugefügt gcc_jit_context_add_driver_option.
Sonstiges
Eine Vielzahl von architektur- und betriebssystemspezifischen Änderungen.
Quelle: linux.org.ru

