Am 3. Mai erfolgte die erste öffentliche Veröffentlichung der neunten Version von GCC: GCC 9.1.
Es enthält viele wesentliche Verbesserungen und Ergänzungen gegenüber dem achten
Ausführung.
Allgemeine Änderungen
Optionen
- Befehle, die die Größe akzeptieren, unterstützen jetzt 64-Bit-Werte und Suffixe zur Angabe der Größe;
- Option hinzugefügt -Flive-Patching, um Optimierungen zu steuern, die potenziell destruktiv für den dynamischen Code-Ersatz sind;
- Option --completion hinzugefügt, um die automatische Vervollständigung in der Befehlsshell zu unterstützen;
- Die Compiler-Diagnose umfasst jetzt Zeilennummern (-fno-diagnostics-show-line-numbers) Und
Typinformationen (fno-diagnostics-show-labels); - Option hinzugefügt -fdiagnostics-format=json um Diagnosen im JSON-Format auszugeben;
- Optionen zum Festlegen der Ausrichtung (-falign-Funktionen, zum Beispiel) kann jetzt einige Ausrichtungsoptionen akzeptieren;
- Optionen zum Filtern der Dateiliste hinzugefügt (-fprofile-filter-dateien, -fprofile-exclude-files), die vom Profiler instrumentiert werden;
- AddressSanitizer verwendet jetzt eine kompaktere Ausrichtung, um ungültige Zugriffe auf Variablen im Stapel abzufangen.
- Zahlreiche Ausgabeverbesserungen -fopt-info;
- Option hinzugefügt -fsave-optimization-record um den Optimierungsbericht in einer Datei zu speichern;
- Option hinzugefügt -fipa-Stack-Alignment и -fipa-referenz-adressierbar.
Neue integrierte Funktionen
Neues Attribut
Andere
Zahlreiche Verbesserungen bei der Codegenerierung im Zusammenhang mit:
- Generierung von Schalterkonstrukten;
- interprozedurale Optimierungen;
- Optimierung basierend auf Profiling-Informationen;
- Optimierung in der Montagephase (LTO);
Auch das interne Format von gcov ist jetzt JSON und die neue Option --use-hotness-colors beinhaltet das Färben von Codezeilen basierend auf der Häufigkeit ihrer Verwendung.
Sprachen
Qualität und Vollständigkeit der Umsetzung OpenACC Die Sprachen C, C++ und Fortran werden weiter verbessert.
C-ähnliche Sprachen
- Teilweise Unterstützung für OpenMP 5.0 wurde implementiert;
- Funktion hinzugefügt __builtin_convertvector;
- Warnung hinzugefügt -Waddress-of-packed-member;
- Verbesserungen an einer Reihe bestehender Warnungen;
- Der Fehlertext bei der Übergabe der falschen Anzahl von Argumenten an ein Makro enthält jetzt die Deklaration des Makros selbst;
- Verbesserungen bei Tippfehlerkorrekturvorschlägen.
C
- Unterstützen Sie _Static_assert mit einem Argument für -std=c2x (zukünftiger C-Standard);
- Neue Warnung -Wabsoluter Wert, was den falschen Argumenttyp für Funktionen wie abs() abfängt.
C + +
- Neue Warnungen: -Wdeprecated-copy,
-Winit-list-lifetime,
-Wredundanter-Zug,
-Wpessimizing-move,
-Wclass-Konvertierung; - Es wird daran gearbeitet, neue Funktionen aus dem zukünftigen Standard zu implementieren C++2a;
- Das Frontend speichert jetzt genauere Informationen zu einer Reihe von Quellcodeelementen, wodurch Sie detailliertere Informationen in der Diagnose anzeigen können;
- Verbesserte Diagnose für überladene Funktionen, binäre Operatoren, Funktionsaufrufe und Formatzeichenfolgen;
- Von einigen Entwicklungsumgebungen unterstützte automatische Korrekturen für eine Reihe häufiger Fehler (fehlende Klammern, Namespaces, Tippfehler usw.) wurden hinzugefügt.
libstdc ++
- Die C++17-Implementierung ist nicht mehr experimentell;
- Parallele Algorithmen hinzugefügt, , , A erfordert nicht mehr -lstdc++fs;
- Verbesserte experimentelle Unterstützung für C++2a ( , , std::bind_front usw.);
- Unterstützung für das Öffnen von Dateistreams unter Windows, deren Pfade Nicht-Zeichen enthalten;
- Erste Unterstützung unter Windows;
- Erste Unterstützung für Networking TS.
D
Die D-Sprachversion 2.076 ist in GCC enthalten.
Fortran
- Volle Unterstützung für asynchrone E/A;
- BACK-Argument für MINLOC und MAXLOC implementiert;
- Implementierte FINDLOC- und IS_CONTIGOUS-Funktionen;
- Die Syntax für den Zugriff auf die Komponenten komplexer Zahlen wurde implementiert: c%re und c%im;
- Implementierte Syntax str%len und a%kind;
- C-Deskriptoren und ISO_Fortran_binding.h-Header implementiert;
- Gelockerte Anforderungen an das Ergebnis der MAX- und MIN-Funktionen, wenn eines der Argumente NaN ist;
- Option hinzugefügt -fdec-include;
- Richtlinie hinzugefügt GEBAUT.
libgccjit
- Funktion hinzugefügt gcc_jit_context_add_driver_option.
Andere
Viele architektur- und betriebssystemspezifische Änderungen.
Source: linux.org.ru