3. května byl veřejně vydán první veřejný release deváté verze GCC: GCC 9.1.
Obsahuje řadu významných vylepšení a přídavků ve srovnání s osmou
verzí.
Obecné změny
Možnosti
- Příkazy přijímající velikost nyní podporují 64bitové hodnoty a přípony pro určení velikosti;
- Byla přidána možnost -flive-patching, pro řízení optimalizací, které mohou být destruktivní pro dynamickou výměnu kódu;
- Byla přidána volba —completion pro podporu automatického doplňování v příkazovém řádku;
- Diagnostiky překladače nyní zahrnují čísla řádků (-fno-diagnostics-show-line-numbers) a
informaci o typech (fno-diagnostics-show-labels); - Byla přidána možnost -fdiagnostics-format=json pro výstup diagnostiky ve formátu JSON;
- Volby pro určení zarovnání (-falign-functions, například) nyní mohou přijímat pár variant zarovnání;
- Byly přidány volby pro filtrování seznamu souborů (-fprofile-filter-files, -fprofile-exclude-files), které podléhají instrumentaci profilerem;
- AddressSanitizer nyní používá kompaktnější zarovnání pro zachycení nesprávných přístupů k proměnným na zásobníku;
- Několik vylepšení ve výstupu -fopt-info;
- Byla přidána možnost -fsave-optimization-record pro uložení zprávy o optimalizacích do souboru;
- Byla přidána možnost -fipa-stack-alignment a -fipa-reference-addressable.
Nové vestavěné funkce
Nový atribut
Jiné
Několik vylepšení generování kódu se vztahuje na:
- generaci switch-konstrukcí;
- meziprocedurální optimalizace;
- optimalizaci založenou na profilačních informacích;
- optimalizaci v fázi sestavení (LTO);
Také interní formát gcov nyní je JSON, a nová volba —use-hotness-colors zahrnuje zbarvení řádků kódu podle frekvence jejich použití.
Jazyky
Kvalita a úplnost implementace OpenACC v jazycích C, C++ a Fortran se nadále zlepšují.
Jazyky podobné C
- Byla implementována částečná podpora OpenMP 5.0;
- Byla přidána funkce __builtin_convertvector;
- Bylo přidáno varování -Waddress-of-packed-member;
- Vylepšení v řadě existujících varování;
- Text chyby při předávání nesprávného počtu argumentů do makra nyní zahrnuje deklaraci samotného makra;
- Vylepšení v návrzích na opravy překlepů.
C
- Podpora _Static_assert s jedním argumentem pro -std=c2x (budoucí standard C);
- Nové varování -Wabsolute-value, které zachycuje nesprávný typ argumentu pro takové funkce jako abs().
C++
- Nová varování: -Wdeprecated-copy,
-Winit-list-lifetime,
-Wredundant-move,
-Wpessimizing-move,
-Wclass-conversion; - Probíhá implementace nových možností z budoucího standardu C++ 2a;
- Frontend nyní uchovává přesnější informace o řadě prvků zdrojového kódu, což umožňuje zobrazit podrobnější informace v diagnostikách;
- Zlepšeny diagnostiky pro přetížené funkce, binární operátory, volání funkcí a formátovací řetězce;
- Přidána automatická oprava chyb pro řadu populárních chyb (chybějící závorky, jmenné prostory, překlepy atd.), kterou podporují některá vývojová prostředí.
libstdc++
- Implementace C++17 už není experimentální;
- Přidány paralelní algoritmy, , , a již nevyžaduje -lstdc++fs;
- Zlepšena experimentální podpora C++ 2a (, , std::bind_front atd.);
- Podpora otevírání souborových proudů na Windows, jejichž cesty obsahují znaky mimo char;
- Základní podpora na Windows;
- Základní podpora pro Networking TS.
DDoS
Jazyk D verze 2.076 je zahrnut ve verzi GCC.
Fortran
- Úplná podpora asynchronního vstupu/výstupu;
- Implementován argument BACK pro MINLOC a MAXLOC;
- Implementovány funkce FINDLOC a IS_CONTIGUOUS;
- Implementována syntaxe pro přístup k částem komplexních čísel: c%re a c%im;
- Implementována syntaxe str%len a a%kind;
- Implementovány deskriptory C a hlavička ISO_Fortran_binding.h;
- Uvolněny požadavky na výsledek funkcí MAX a MIN, když je jeden z argumentů NaN;
- Byla přidána možnost -fdec-include;
- Byla přidána direktiva BUILTIN.
libgccjit
- Byla přidána funkce gcc_jit_context_add_driver_option.
Jiné
Přesně množství architektonických a OS-specifických změn.
Zdroj: linux.org.ru

