3. mai ble den første offentlige utgivelsen av den niende versjonen av GCC: GCC 9.1.
Den inneholder mange vesentlige forbedringer og tillegg i forhold til den åttende versjonen.
версией.
Generelle endringer
Alternativer
- Kommandoer som tar størrelse, støtter nå 64-bits verdier og suffikser for å angi størrelse;
- Et alternativ er lagt til -flive-patching, for å styre optimaliseringer som potensielt kan være destruktive for dynamisk kodeerstatning;
- Den nye -completion-alternativet gir støtte for autfullføring i kommandolinjen;
- Kompilatorens diagnostikk inkluderer nå linjenummer (-fno-diagnostics-show-line-numbers) og
informasjons type (fno-diagnostics-show-labels); - Et alternativ er lagt til -fdiagnostics-format=json for å returnere diagnostikk i JSON-format;
- Alternativer for å spesifisere justering (-falign-functions, for eksempel) kan nå ta et par alternativer for justering;
- Alternativer for filtrering av fillisten (-fprofile-filter-files, -fprofile-exclude-files) som blir instrumentert av profilerer;
- AddressSanitizer bruker nå en mer kompakt justering for å fange feil tilgang til variabler på stakken;
- Flere forbedringer i utdata -fopt-info;
- Et alternativ er lagt til -fsave-optimization-record for å lagre optimaliseringsrapporten i en fil;
- Et alternativ er lagt til -fipa-stack-alignment og -fipa-reference-addressable.
Nye innebygde funksjoner
Den nye attributten
- copy.
Other
Flere forbedringer i kodegenerering relatert til:
- generering av switch-strukturer;
- interprosedyrale optimaliseringer;
- optimalisering basert på profileringsinformasjon;
- optimalisering under bygging (LTO);
Også det interne formatet for gcov er nå JSON, og det nye alternativet —use-hotness-colors aktiverer fargelegging av kode basert på bruksfrekvens.
Språk
Kvalitet og fullstendighet av implementeringen av OpenACC i språkene C, C++ og Fortran fortsetter å forbedres.
C-lignende språk
- Delvis støtte for OpenMP 5.0 er implementert;
- Legg til funksjon __builtin_convertvector;
- En ny advarsel er lagt til -Waddress-of-packed-member;
- Forbedringer i en rekke eksisterende advarsler;
- Feilmeldingen ved å sende feil antall argumenter til makroer inkluderer nå selve makroens deklarasjon;
- Forbedringer i forslag til staving.
C
- Støtte for _Static_assert med ett argument for -std=c2x (den fremtidige C-standarden);
- En ny advarsel er lagt til -Wabsolute-value, som fanger feil argumenttype for funksjoner som abs().
C++
- Nye advarsler: -Wdeprecated-copy,
-Winit-list-lifetime,
-Wredundant-move,
-Wpessimizing-move,
-Wclass-conversion; - Arbeidet med å implementere nye muligheter fra den fremtidige standarden C++ 2a;
- Frontend lagrer nå mer nøyaktig informasjon om en rekke elementer i kildekoden, noe som gjør at det kan vise mer detaljert informasjon i diagnostikkene;
- Diagnostikkene for overbelastede funksjoner, binære operatorer, funksjonskall og formatstrenger er forbedret;
- Automatiske rettelser for en rekke vanlige feil (manglende parenteser, navnerom, skrivefeil osv.) er nå tilgjengelige i noen utviklingsmiljøer.
libstdc++
- Implementeringen av C++17 er ikke lenger eksperimentell;
- Parallellalgoritmer, <execution>, <memory_resource>, og <filesystem> krever ikke lenger -lstdc++fs;
- Den eksperimentelle støtten for C++ 2a (<bit>, <version>, std::bind_front osv.) er forbedret;
- Støtte for å åpne filstrømmer på Windows hvor stien inneholder tegn utenfor char;
- Innledende støtte for <filesystem> på Windows;
- Innledende støtte for Networking TS.
D
D-språket versjon 2.076 er inkludert i GCC.
Fortran
- Full støtte for asynkron input/output;
- Argumentet BACK for MINLOC og MAXLOC er implementert;
- Funksjonene FINDLOC og IS_CONTIGUOUS er implementert;
- Syntaks for tilgang til delene av komplekse tall er implementert: c%re og c%im;
- Syntaksen str%len og a%kind er implementert;
- C-deskriptorer og header ISO_Fortran_binding.h er implementert;
- Kravene til resultatene av funksjonene MAX og MIN er svekket når ett av argumentene er NaN;
- Et alternativ er lagt til -fdec-include;
- Direktivet BUILTIN.
libgccjit
- Legg til funksjon gcc_jit_context_add_driver_option.
Other
Et stort antall arkitektur- og OS-spesifikke endringer.
Kilde: linux.org.ru

