3. maja je bila prva javna izdaja devete različice GCC: GCC 9.1.
Vsebuje številne pomembne izboljšave in dodatke v primerjavi z osmo
različica.
Splošne spremembe
Možnosti
- Ukazi, ki sprejemajo velikost, zdaj podpirajo 64-bitne vrednosti in pripone za določanje velikosti;
- Dodana možnost -flive-krpanje, za nadzor optimizacij, ki so potencialno škodljive za dinamično zamenjavo kode;
- Dodana možnost --completion za podporo samodokončanja v ukazni lupini;
- Diagnostika prevajalnika zdaj vključuje številke vrstic (-fno-diagnostics-show-line-numbers) In
informacije o vrsti (fno-diagnostics-show-labels); - Dodana možnost -fdiagnostics-format=json za izpis diagnostike v formatu JSON;
- Možnosti za določanje poravnave (-falign-funkcije, na primer) zdaj lahko sprejme nekaj možnosti poravnave;
- Dodane možnosti za filtriranje seznama datotek (-fprofile-filter-datoteke, -fprofile-exclude-files), ki jih instrumentira profiler;
- AddressSanitizer zdaj uporablja bolj kompaktno poravnavo za lovljenje neveljavnih dostopov do spremenljivk v skladu;
- Številne izboljšave izhoda -fopt-info;
- Dodana možnost -fsave-optimization-record za shranjevanje poročila o optimizaciji v datoteko;
- Dodana možnost -fipa-poravnava sklada и -fipa-reference-naslovljiv.
Nove vgrajene funkcije
Nov atribut
- copy.
Drugo
Številne izboljšave generiranja kode, povezane z:
- generiranje stikalnih konstruktov;
- medproceduralne optimizacije;
- optimizacija na podlagi profilnih informacij;
- optimizacija v fazi montaže (LTO);
Tudi notranji format gcov je zdaj JSON in nova možnost --use-hotness-colors vključuje barvanje vrstic kode glede na to, kako pogosto se uporabljajo.
Jeziki
Kakovost in popolnost izvedbe OpenACC jeziki C, C++ in Fortran se še naprej izboljšujejo.
C-podobni jeziki
- Implementirana je delna podpora za OpenMP 5.0;
- Dodana funkcija __vgrajen_pretvornik;
- Dodano opozorilo -Waddress-of-packed-član;
- Izboljšave številnih obstoječih opozoril;
- Besedilo napake pri posredovanju napačnega števila argumentov makru zdaj vključuje deklaracijo samega makra;
- Izboljšave predlogov za popravljanje tipkarskih napak.
C
- Podpora _Static_assert z enim argumentom za -std=c2x (prihodnji standard C);
- Novo opozorilo -Wabsolutna vrednost, ki ujame napačen tip argumenta za funkcije, kot je abs().
C + +
- Nova opozorila: -Wdeprecated-copy,
-Winit-list-življenjska doba,
-Odvečna poteza,
-Wpesimiziranje-premikati,
-Wclass-pretvorba; - V teku je delo za implementacijo novih funkcij prihodnjega standarda C++2a;
- Frontend zdaj shranjuje natančnejše informacije o številnih elementih izvorne kode, kar vam omogoča prikaz podrobnejših informacij v diagnostiki;
- Izboljšana diagnostika za preobremenjene funkcije, binarne operatorje, klice funkcij in formatne nize;
- Dodani samodejni popravki, ki jih podpirajo nekatera razvojna okolja za številne priljubljene napake (manjkajoči oklepaji, imenski prostori, tipkarske napake itd.).
libstdc++
- Izvedba C++17 ni več poskusna;
- Dodani vzporedni algoritmi, , , A ne zahteva več -lstdc++fs;
- Izboljšana eksperimentalna podpora za C++2a ( , , std::bind_front itd.);
- Podpora za odpiranje tokov datotek v sistemu Windows, katerih poti vsebujejo znake, ki niso znaki;
- Začetna podpora v sistemu Windows;
- Začetna podpora za Networking TS.
D
Različica jezika D 2.076 je vključena v GCC.
Fortran
- Popolna podpora za asinhroni I/O;
- Implementiran argument BACK za MINLOC in MAXLOC;
- Implementirane funkcije FINDLOC in IS_CONTIGOUS;
- Implementirana je sintaksa za dostop do komponent kompleksnih števil: c%re in c%im;
- Implementirana sintaksa str%len in a%kind;
- Implementirani deskriptorji C in glava ISO_Fortran_binding.h;
- Zahteve za rezultat funkcij MAX in MIN so bile sproščene, ko je eden od argumentov NaN;
- Dodana možnost -fdec-vključi;
- Dodana direktiva ZGRADENA.
libgccjit
- Dodana funkcija gcc_jit_context_add_driver_option.
Drugo
Veliko sprememb, specifičnih za arhitekturo in OS.
Vir: linux.org.ru