3. svibnja održano je prvo javno izdanje devete verzije GCC: GCC 9.1.
Sadrži brojne značajne poboljšanja i dodatke u odnosu na osmu
verziju.
Opća poboljšanja
Opcije
- Komande koje prihvaćaju veličinu sada podržavaju 64-bitne vrijednosti i sufikse za navođenje veličine;
- Dodana opcija -flive-patching, za upravljanje optimizacijama koje potencijalno mogu biti destruktivne za dinamičku zamjenu koda;
- Dodana opcija —completion za podršku automatskom dovršavanju u komandnoj ljusci;
- Dijagnostike prevoditelja sada uključuju brojeve redaka (-fno-diagnostics-show-line-numbers) i
informacije o tipovima (fno-diagnostics-show-labels); - Dodana opcija -fdiagnostics-format=json za ispis dijagnostika u JSON formatu;
- Opcije za navođenje poravnanja (-falign-functions, na primjer) sada mogu prihvatiti par varijanti poravnanja;
- Dodane opcije za filtriranje popisa datoteka (-fprofile-filter-files, -fprofile-exclude-files), koje se podvrgavaju instrumentaciji profajlera;
- AddressSanitizer sada koristi kompaktnije poravnanje za hvatanje neispravnih pristupa varijablama na stogu;
- Brojna poboljšanja u izlazu -fopt-info;
- Dodana opcija -fsave-optimization-record za spremanje izvješća o optimizacijama u datoteku;
- Dodana opcija -fipa-stack-alignment i -fipa-reference-addressable.
Nove ugrađene funkcije
Nova oznaka
- copy.
Ostalo
Brojna poboljšanja generacije koda povezana s:
- generacijom switch konstrukcija;
- interproceduralnim optimizacijama;
- optimizacijom temeljenom na informacijama o profiliranju;
- optimizacijom u fazi sastavljanja (LTO);
Također, unutarnji format gcov sada je JSON, a nova opcija —use-hotness-colors uključuje bojanje redaka koda ovisno o učestalosti njihove upotrebe.
Jezici
Kvaliteta i cjelovitost implementacije OpenACC u jezicima C, C++ i Fortran se nastavljaju poboljšavati.
C-poput jezika
- Djelomična podrška za OpenMP 5.0 je implementirana;
- Dodana funkcija __builtin_convertvector;
- Dodano upozorenje -Waddress-of-packed-member;
- Poboljšanja u nizu postojećih upozorenja;
- Tekst greške prilikom prolaska pogrešnog broja argumenata u makrosu sada uključuje deklaraciju samog makrosa;
- Poboljšanja u prijedlozima za ispravak tipfeler.
C
- Podrška za _Static_assert s jednim argumentom za -std=c2x (budući standard C);
- Nova upozorenja -Wabsolute-value, koji hvata pogrešan tip argumenta za funkcije poput abs().
C++
- Nova upozorenja: -Wdeprecated-copy,
-Winit-list-lifetime,
-Wredundant-move,
-Wpessimizing-move,
-Wclass-conversion; - Radimo na implementaciji novih mogućnosti iz budućeg standarda C++ 2a;
- Frontend sada čuva preciznije informacije o nizu elemenata iz izvornog koda, što omogućava detaljnije prikaze u dijagnostici;
- Unapređenje dijagnostike za preopterećene funkcije, binarne operatore, pozive funkcija i formate stringova;
- Dodani automatski popravci podržani od nekih razvojnih okruženja za nekoliko popularnih grešaka (nedostajući zagrade, prostori imena, tipfeleri itd.).
libstdc++
- Implementacija C++17 više nije eksperimentalna;
- Dodani paralelni algoritmi, , , a više ne zahteva -lstdc++fs;
- Unapređena eksperimentalna podrška za C++ 2a (, , std::bind_front itd.);
- Podrška za otvaranje datotečnih tokova na Windowsu, čiji put sadrži znakove koji prevazilaze char;
- Početna podrška za na Windowsu;
- Početna podrška za Networking TS.
D
D jezik verzije 2.076 uključen je u GCC.
Fortran
- Potpuna podrška za asinhroni ulaz/izlaz;
- Implementiran argument BACK za MINLOC i MAXLOC;
- Implementirane funkcije FINDLOC i IS_CONTIGUOUS;
- Implementisana sintaksa pristupa sastavnim delovima kompleksnih brojeva: c%re i c%im;
- Implementirana sintaksa str%len i a%kind;
- Implementirani deskriptori C i zaglavlje ISO_Fortran_binding.h;
- Olakšani zahtevi za rezultate funkcija MAX i MIN kada je jedan od argumenata NaN;
- Dodana opcija -fdec-include;
- Dodana direktiva BUILTIN.
libgccjit
- Dodana funkcija gcc_jit_context_add_driver_option.
Ostalo
Puno arhitektonskih i OS-specifičnih izmena.
Izvor: linux.org.ru

