Am 3. Mai fand die erste öffentliche Veröffentlichung der neunten Version von GCC: GCC 9.1 statt.
Es enthÀlt zahlreiche wesentliche Verbesserungen und ErgÀnzungen im Vergleich zur achten
Version.
Allgemeine Ănderungen
Optionen
- Befehle, die eine GröĂe akzeptieren, unterstĂŒtzen jetzt 64-Bit-Werte und Suffixe zur Angabe der GröĂe;
- Die Option -flive-patching, um Optimierungen zu steuern, die potenziell destruktiv fĂŒr die dynamische Codeersetzung sind;
- Die Option âcompletion wurde hinzugefĂŒgt, um die Auto-VervollstĂ€ndigung in der Kommandozeile zu unterstĂŒtzen;
- Die Diagnosen des Compilers umfassen jetzt Zeilennummern (-fno-diagnostics-show-line-numbers) und
Informationen ĂŒber Typen (fno-diagnostics-show-labels); - Die Option -fdiagnostics-format=json um Diagnosen im JSON-Format auszugeben;
- Optionen zur Angabe der Ausrichtung (-falign-functions, zum Beispiel) können jetzt eine Reihe von Ausrichtungsoptionen akzeptieren;
- Es wurden Optionen zur Filterung der Dateiliste hinzugefĂŒgt (-fprofile-filter-files, -fprofile-exclude-files), die dem Profiler zur Instrumentierung unterzogen werden;
- AddressSanitizer verwendet jetzt eine kompaktere Ausrichtung, um ungĂŒltige Zugriffe auf Variablen im Stapel zu erkennen;
- Zahlreiche Verbesserungen in der Ausgabe -fopt-info;
- Die Option -fsave-optimization-record zum Speichern des Optimierungsberichts in eine Datei;
- Die Option -fipa-stack-alignment und -fipa-reference-addressable.
Neue eingebettete Funktionen
Neues Attribut
- copy.
Sonstiges
Zahlreiche Verbesserungen der Codegenerierung im Zusammenhang mit:
- der Generierung von switch-Strukturen;
- interproceduralen Optimierungen;
- Optimierungen basierend auf Profildaten;
- Optimierungen zur Compile-Zeit (LTO);
Auch das interne Format von gcov ist jetzt JSON, und die neue Option âuse-hotness-colors fĂŒhrt zur FĂ€rbung von Codezeilen basierend auf der HĂ€ufigkeit ihrer Nutzung.
Sprachen
QualitÀt und VollstÀndigkeit der Implementierung OpenACC in den Sprachen C, C++ und Fortran werden weiterhin verbessert.
C-Ă€hnliche Sprachen
- Teilweise UnterstĂŒtzung fĂŒr OpenMP 5.0 wurde implementiert;
- Eine Funktion wurde hinzugefĂŒgt __builtin_convertvector;
- Eine Warnung wurde hinzugefĂŒgt -Waddress-of-packed-member;
- Verbesserungen bei einer Reihe bestehender Warnungen;
- Der Fehlermeldung beim Ăbergeben einer falschen Anzahl von Argumenten an ein Makro enthĂ€lt jetzt die ErklĂ€rung des Makros selbst;
- Verbesserungen bei VorschlÀgen zur Korrektur von Tippfehlern.
C
- UnterstĂŒtzung fĂŒr _Static_assert mit einem Argument fĂŒr -std=c2x (der zukĂŒnftige C-Standard);
- Eine neue Warnung -Wabsolute-value, die falsche Argumenttypen fĂŒr Funktionen wie abs() abfĂ€ngt.
C++
- Neue Warnungen: -Wdeprecated-copy,
-Winit-list-lifetime,
-Wredundant-move,
-Wpessimizing-move,
-Wclass-conversion; - Die Arbeit an der Implementierung neuer Funktionen aus dem zukĂŒnftigen Standard wird fortgesetzt. C++ 2a;
- Das Frontend speichert jetzt genauere Informationen ĂŒber eine Reihe von Elementen des Quellcodes, was eine detailliertere Anzeige in Diagnosen ermöglicht;
- Diagnosen fĂŒr ĂŒberladene Funktionen, binĂ€re Operatoren, Funktionsaufrufe und Formatstrings wurden verbessert;
- Automatische Korrekturen fĂŒr eine Reihe von hĂ€ufigen Fehlern (fehlende Klammern, NamensrĂ€ume, Tippfehler usw.), die von einigen Entwicklungsumgebungen unterstĂŒtzt werden, wurden hinzugefĂŒgt.
libstdc++
- Die Implementierung von C++17 ist nicht mehr experimentell;
- Parallele Algorithmen wurden hinzugefĂŒgt, , , und erfordert nicht mehr -lstdc++fs;
- Die experimentelle UnterstĂŒtzung von C++ 2a (, , std::bind_front usw.) wurde verbessert;
- UnterstĂŒtzung fĂŒr das Ăffnen von Dateien auf Windows, deren Pfade Zeichen enthalten, die ĂŒber char hinausgehen;
- Erste UnterstĂŒtzung von unter Windows;
- Erste UnterstĂŒtzung des Networking TS.
D
Die D-Sprache Version 2.076 ist in GCC enthalten.
Fortran
- VollstĂ€ndige UnterstĂŒtzung fĂŒr asynchrone Ein- und Ausgabe;
- Das Argument BACK fĂŒr MINLOC und MAXLOC wurde implementiert;
- Die Funktionen FINDLOC und IS_CONTIGUOUS wurden implementiert;
- Der Syntax fĂŒr den Zugriff auf die Bestandteile komplexer Zahlen wurde implementiert: c%re und c%im;
- Der Syntax str%len und a%kind wurde implementiert;
- C-Deskriptoren und die Headerdatei ISO_Fortran_binding.h wurden implementiert;
- Die Anforderungen an das Ergebnis der Funktionen MAX und MIN wurden gelockert, wenn einer der Argumente NaN ist;
- Die Option -fdec-include;
- Direktive hinzugefĂŒgt BUILTIN.
libgccjit
- Eine Funktion wurde hinzugefĂŒgt gcc_jit_context_add_driver_option.
Sonstiges
Eine Vielzahl architektur- und betriebssystemspezifischer Ănderungen.
Quelle: linux.org.ru

