GCC 9.1

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
Neue eingebettete Funktionen
Neues Attribut
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

Sonstiges

Eine Vielzahl architektur- und betriebssystemspezifischer Änderungen.

Quelle: linux.org.ru

60GB SSD 8Gb DDR4