Dana 3. svibnja došlo je do prvog javnog izdanja devete verzije GCC-a: GCC 9.1.
Sadrži mnogo značajnih poboljšanja i dodataka u usporedbi s osmom
verzija.
Opće promjene
Opcije
- Naredbe koje prihvaćaju veličinu sada podržavaju 64-bitne vrijednosti i sufikse za određivanje veličine;
- Dodana opcija -flive-krpanje, za kontrolu optimizacija koje su potencijalno destruktivne za dinamičku zamjenu koda;
- Dodana opcija --completion za podršku automatskog dovršavanja u naredbenoj ljusci;
- Dijagnostika prevoditelja sada uključuje brojeve redaka (-fno-diagnostics-show-line-numbers) I
tip informacija (fno-dijagnostika-pokaži-oznake); - Dodana opcija -fdiagnostics-format=json za izlaz dijagnostike u JSON formatu;
- Opcije za određivanje poravnanja (-falign-funkcije, na primjer) sada može prihvatiti nekoliko opcija poravnanja;
- Dodane opcije za filtriranje popisa datoteka (-fprofil-filter-datoteke, -fprofile-isključi-datoteke), koje instrumentira profiler;
- AddressSanitizer sada koristi kompaktnije poravnanje za hvatanje nevažećih pristupa varijablama na stogu;
- Brojna poboljšanja izlaza -fopt-info;
- Dodana opcija -fsave-optimization-record za spremanje izvješća o optimizaciji u datoteku;
- Dodana opcija -fipa-poravnavanje-stoga и -fipa-referenca-adresabilna.
Nove ugrađene značajke
- __ugrađeno_očekivati_s_vjerojatnošću;
- __ugrađen_ima_atribut;
- __ugrađena_sigurna_vrijednost_nagađanja.
Novi atribut
Drugi
Brojna poboljšanja generiranja koda koja se odnose na:
- generiranje sklopnih konstrukcija;
- interproceduralne optimizacije;
- optimizacija na temelju informacija iz profiliranja;
- optimizacija u fazi montaže (LTO);
Također gcov interni format je sada JSON, a nova opcija --koristite-tople-boje uključuje bojanje redaka koda na temelju toga koliko se često koriste.
Jezici
Kvaliteta i cjelovitost provedbe OpenACC jezici C, C++ i Fortran nastavljaju se poboljšavati.
C-jezici
- Implementirana je djelomična podrška za OpenMP 5.0;
- Dodana značajka __ugrađeni_konvertor;
- Dodano upozorenje -Adresa-upakiranog-člana;
- Poboljšanja niza postojećih upozorenja;
- Tekst pogreške prilikom prosljeđivanja pogrešnog broja argumenata makronaredbi sada uključuje deklaraciju same makronaredbe;
- Poboljšanja prijedloga za ispravak tipfelera.
C
- Podrška _Static_assert s jednim argumentom za -std=c2x (budući C standard);
- Novo upozorenje -Wapsolutna vrijednost, koji hvata pogrešan tip argumenta za funkcije poput abs().
C + +
- Nova upozorenja: -Wdeprecated-copy,
-Winit-list-životni vijek,
-Suvišan potez,
-Wpesimiziranje-kretanje,
-Wclass-konverzija; - U tijeku je rad na implementaciji novih značajki iz budućeg standarda C++2a;
- Sučelje sada pohranjuje točnije informacije o nizu elemenata izvornog koda, što vam omogućuje prikaz detaljnijih informacija u dijagnostici;
- Poboljšana dijagnostika za preopterećene funkcije, binarne operatore, pozive funkcija i nizove formata;
- Dodani su automatski popravci koje podržavaju neka razvojna okruženja za brojne popularne pogreške (nedostajuće zagrade, prostori imena, pogreške pri upisu itd.).
libstdc++
- Implementacija C++17 više nije eksperimentalna;
- Dodani paralelni algoritmi, , , A više ne zahtijeva -lstdc++fs;
- Poboljšana eksperimentalna podrška za C++2a ( , , std::bind_front, itd.);
- Podrška za otvaranje tokova datoteka u sustavu Windows čije staze sadrže znakove koji nisu znakovi;
- Početna podrška na Windowsima;
- Početna podrška za Networking TS.
D
D verzija 2.076 jezika uključena je u GCC.
Fortran
- Puna podrška za asinkroni I/O;
- Implementiran BACK argument za MINLOC i MAXLOC;
- Implementirane funkcije FINDLOC i IS_CONTIGOUS;
- Implementirana je sintaksa za pristup komponentama kompleksnih brojeva: c%re i c%im;
- Implementirana sintaksa str%len i a%kind;
- Implementirani C deskriptori i ISO_Fortran_binding.h zaglavlje;
- Zahtjevi za rezultat funkcija MAX i MIN su ublaženi kada je jedan od argumenata NaN;
- Dodana opcija -fdec-uključi;
- Dodana direktiva GRAĐENA.
libgccjit
- Dodana značajka gcc_jit_context_opcija_dodavanja_drivera.
Drugi
Mnoge promjene specifične za arhitekturu i OS.
Izvor: linux.org.ru