3. mai fant den første offentlige utgivelsen av den niende versjonen av GCC sted: GCC 9.1.
Den inneholder mange betydelige forbedringer og tillegg sammenlignet med den åttende
versjon.
Generelle endringer
Alternativer
- Kommandoer som godtar størrelse støtter nå 64-bits verdier og suffikser for å spesifisere størrelse;
- Lagt til alternativ -flive-patching,for å kontrollere optimaliseringer som potensielt er ødeleggende for dynamisk,kodeerstatning;
- Lagt til --fullføringsalternativ for å støtte autofullføring i kommandoskallet;
- Kompilatordiagnostikk inkluderer nå linjenumre (-fno-diagnostikk-vis-linjetall) Og
type informasjon (fno-diagnostikk-vis-etiketter); - Lagt til alternativ -fdiagnostics-format=json å sende ut diagnostikk i JSON-format;
- Alternativer for å spesifisere justering (-falign-funksjoner, for eksempel) kan nå godta et par justeringsalternativer;
- Lagt til alternativer for å filtrere listen over filer (-fprofile-filter-filer, -fprofile-ekskluder-filer), som er instrumentert av profileren;
- AddressSanitizer bruker nå mer kompakt justering for å fange opp ugyldige tilganger til variabler på stabelen;
- Tallrike ytelsesforbedringer -fopt-info;
- Lagt til alternativ -fsave-optimalization-record å lagre optimaliseringsrapporten til en fil;
- Lagt til alternativ -fipa-stack-justering и -fipa-referanse-adresserbar.
Nye innebygde funksjoner
Nytt attributt
andre
Tallrike forbedringer av kodegenerering relatert til:
- generering av bryterkonstruksjoner;
- inter-prosessuelle optimaliseringer;
- optimalisering basert på profileringsinformasjon;
- optimalisering på monteringsstadiet (LTO);
Også gcovs interne format er nå JSON, og det nye alternativet --bruk-varme-farger innebærer fargelegging av kodelinjer basert på hvor ofte de brukes.
Språk
Kvalitet og fullstendighet i gjennomføringen ÅpneACC Språkene C, C++ og Fortran fortsetter å forbedre seg.
C-lignende språk
- Delvis støtte for OpenMP 5.0 er implementert;
- Lagt til funksjon __builtin_convertvector;
- Lagt til advarsel -Vaddress-of-packed-medlem;
- Forbedringer av en rekke eksisterende advarsler;
- Feilteksten ved overføring av feil antall argumenter til en makro inkluderer nå erklæringen av selve makroen;
- Forbedringer av forslag til skrivefeilretting.
C
- Støtt _Static_assert med ett argument for -std=c2x (fremtidig C-standard);
- Ny advarsel -Wabsolutt-verdi, som fanger feil argumenttype for funksjoner som abs().
C + +
- Nye advarsler: -Uforeldet-kopi,
- Winit-liste-levetid,
-Uredundant-trekk,
-Wpessimizing-move,
-Wclass-konvertering; - Det arbeides med å implementere nye funksjoner fra den fremtidige standarden C++2a;
- Frontend lagrer nå mer nøyaktig informasjon om en rekke kildekodeelementer, som lar deg vise mer detaljert informasjon i diagnostikk;
- Forbedret diagnostikk for overbelastede funksjoner, binære operatorer, funksjonskall og formatstrenger;
- Lagt til automatiske rettelser som støttes av enkelte utviklingsmiljøer for en rekke populære feil (manglende parenteser, navneområder, skrivefeil osv.).
libstdc++
- C++17-implementeringen er ikke lenger eksperimentell;
- Lagt til parallelle algoritmer, , , A krever ikke lenger -lstdc++fs;
- Forbedret eksperimentell støtte for C++2a ( , , std::bind_front, osv.);
- Støtte for å åpne filstrømmer på Windows hvis stier inneholder ikke-tegn;
- Innledende støtte på Windows;
- Innledende støtte for Networking TS.
D
D-språkversjon 2.076 er inkludert i GCC.
Fortran
- Full støtte for asynkron I/O;
- Implementert BACK-argument for MINLOC og MAXLOC;
- Implementerte FINDLOC og IS_CONTIGOUS funksjoner;
- Syntaksen for tilgang til komponentene i komplekse tall er implementert: c%re og c%im;
- Implementert syntaks str%len og a%kind;
- Implementerte C-deskriptorer og ISO_Fortran_binding.h-header;
- Avslappede krav til resultatet av MAX- og MIN-funksjonene når ett av argumentene er NaN;
- Lagt til alternativ -fdec-inkluderer;
- Direktiv lagt til BYGGET.
libgccjit
- Lagt til funksjon gcc_jit_context_add_driver_option.
andre
Mange arkitektur- og OS-spesifikke endringer.
Kilde: linux.org.ru