3. mája sa konal prvý verejný vydanie deviatej verzie GCC: GCC 9.1.
Obsahuje množstvo významných vylepšení a pridania v porovnaní s ôsmou
verziou.
Hlavné zmeny
Možnosti
- Príkazy prijímajúce veľkosť teraz podporujú 64-bitové hodnoty a sufixy na označenie veľkosti;
- Pridaná možnosť -flive-patching, na riadenie optimalizácií, potenciálne deštruktívnych pre dynamickú výmenu kódu;
- Pridaná možnosť —completion na podporu automatického doplnenia v príkazovom riadku;
- Diagnostika kompilátora teraz obsahuje čísla riadkov (-fno-diagnostics-show-line-numbers) a
informáciu o typoch (-fno-diagnostics-show-labels); - Pridaná možnosť -fdiagnostics-format=json na výstup diagnostiky vo formáte JSON;
- Možnosti na určenie zarovnávania (-falign-functions, napríklad) môžu teraz prijímať pár variantov zarovnávania;
- Pridané možnosti na filtrovanie zoznamu súborov (-fprofile-filter-files, -fprofile-exclude-files), ktoré podliehajú nástrojovému profilu;
- AddressSanitizer teraz používa kompaktné zarovnávanie na zachytávanie nesprávnych prístupov k premenným na zásobníku;
- Množstvo vylepšení vo výstupe -fopt-info;
- Pridaná možnosť -fsave-optimization-record na uloženie správy o optimalizáciách do súboru;
- Pridaná možnosť -fipa-stack-alignment a -fipa-reference-addressable.
Nové vstavané funkcie
Nový atribút
- copy.
Other
Množstvo vylepšení generovania kódu súvisiacich s:
- generovaním switch konštrukcií;
- medziProcedúrovými optimalizáciami;
- optimalizáciou založenou na informáciách o profilovaní;
- optimalizáciou v štádiu zostavovania (LTO);
Tiež interný formát gcov je teraz JSON a nová možnosť —use-hotness-colors zapína sfarbenie riadkov kódu v závislosti od frekvencie ich používania.
Jazyky
Kvalita a úplnosť implementácie OpenACC v jazykoch C, C++ a Fortran sa naďalej zlepšují.
C-podobné jazyky
- Čiastočná podpora OpenMP 5.0 bola implementovaná;
- Pridaná funkcia __builtin_convertvector;
- Pridané varovanie -Waddress-of-packed-member;
- Vylepšenia v rade existujúcich varovaní;
- Text chyby pri prenose nesprávneho počtu argumentov do makra teraz zahŕňa deklaráciu samotného makra;
- Vylepšenia v návrhoch na opravy preklepov.
C
- Podpora _Static_assert s jedným argumentom pre -std=c2x (budúci štandard C);
- Nové varovanie -Wabsolute-value, ktoré zachytáva nesprávny typ argumentu pre také funkcie ako abs().
C++
- Nové varovania: -Wdeprecated-copy,
-Winit-list-lifetime,
-Wredundant-move,
-Wpessimizing-move,
-Wclass-conversion; - Pracuje sa implementáciou nových funkcií z budúceho štandardu C++ 2a;
- Frontend teraz uchováva presnejšie informácie o niektorých prvkoch zdrojového kódu, čo umožňuje zobraziť podrobnejšie informácie v diagnostike;
- Vylepšené diagnostiky pre preťažené funkcie, binárne operátory, volania funkcií a formátované reťazce;
- Pridané automatické opravy podporované niektorými vývojovými prostrediami pre bežné chyby (chýbajúce zátvorky, menné priestory, preklepy atď.).
libstdc++
- Implementácia C++17 už nie je experimentálna;
- Pridané paralelné algoritmy, , , a už viac nevyžaduje -lstdc++fs;
- Vylepšená experimentálna podpora C++ 2a (, , std::bind_front atď.);
- Podpora otvárania súborových tokov vo Windows, ktorých cesty obsahujú znaky mimo char;
- Počiatočná podpora vo Windows;
- Počiatočná podpora Networking TS.
D
Jazyk D verzie 2.076 je zahrnutý v GCC.
Fortran
- Úplná podpora asynchrónneho vstupu/výstupu;
- Implementovaný argument BACK pre MINLOC a MAXLOC;
- Implementované funkcie FINDLOC a IS_CONTIGUOUS;
- Implementovaný prístupový syntaktický zápis pre zložené časti komplexných čísel: c%re a c%im;
- Implementovaný syntaktický zápis str%len a a%kind;
- Implementované C deskripty a hlavička ISO_Fortran_binding.h;
- Zoslabili sa požiadavky na výsledky funkcií MAX a MIN, keď je jeden z argumentov NaN;
- Pridaná možnosť -fdec-include;
- Pridaná direktíva BUILTIN.
libgccjit
- Pridaná funkcia gcc_jit_context_add_driver_option.
Other
Množstvo architektonicky a OS špecifických zmien.
Zdroj: linux.org.ru

