GCC (GNU Compiler Collection) 10.1, en stor utgivelse av plattformen, ble publisert 7. mai 2020, med høydepunkter inkludert C ++ 20-funksjoner og C2X språkstøtte. C2X er den neste store revisjonen av C-språket, forfallet i 2022.
Utgivelsesmerknader for GCC 10 viser at en rekke C ++ 20-funksjoner er implementert, inkludert tillatelse av innebygd montering i constexpr-funksjoner og utvidelse av strukturerte bindinger. Også for C ++ 20 tillater GCC 10 konvertering til matriser med ukjent bundet, tillater triviell standardinitialisering i constexpr-sammenhenger, legger til constinit
nøkkelord, og avskriverflyktige
nøkkelord.
For C2X, den kommende revisjonen av ISO C-standarden, støttes flere funksjoner med syntaksen-std = c2x
og -std + gnu2x
. Blant disse er strftime
formatkontroll som støtter % OB
og % Ob
formater og UTF-8 tegnkonstanter ved bruk av u8 '' syntaksen.
GCC, som har eksistert i mer enn 33 år, inkluderer frontendere og biblioteker for C, C ++, Fortran, Ada, Go og D. En bulletin er lagt ut for portering til GCC 10. Andre nye funksjoner i GCC 10.1 inkluderer
- Innebygde funksjoner er lagt til, inkludert a
has_builtin
preprosessoroperatør som kan brukes til å spørre om støtte for innebygde funksjoner levert av GCC og andre kompilatorer som støtter den. - Kommandoalternativer er lagt til. Disse inkluderer
-fallering-dce
, for å fjerne unødvendige par avny
ogslett
operatører, og-fanalyzer
, for å aktivere et nytt statisk analysepass og tilhørende advarsler. Sistnevnte alternativ bør betraktes som i eksperimentell fase. - Interprosedural optimalisering ble forbedret. Disse inkluderer reimplementering av inter-prosessuelle skalære erstatninger av aggregater (IPA-SRA) -pass som ble reimplementert for å fungere på koblingstidspunktet. IPA-SRA kan nå også fjerne databehandling og returnere ubrukte returverdier.
- Forbedringer for optimalisering av koblingstid inkluderer en ny binær
ito-dump
. Programmet kan dumpe ulike opplysninger om en LTObyte
objektfil. - Profildrevne optimaliseringsforbedringer er gjort, inkludert forbedring av profilvedlikehold under kompilering og varm / kald partisjonering.
- For C-familien,
adgang
funksjon ogtype
attributt er lagt til for å beskrive hvordan en funksjon får tilgang til objekter som sendes til den ved peker eller referanse, og for å knytte slike argumenter til heltallargumenter som betegner objektstørrelse. Attributtet brukes til å muliggjøre påvisning av ugyldige tilganger av brukerdefinerte funksjoner. Det er også nye advarsler og forbedringer av eksisterende advarsler. En advarsel,-Wzero-lengde-grenser
, advarer om tilgang til elementer i null-lengdesystemer som kan overlappe andre medlemmer av det samme objektet. - En ABI-inkompatibilitet mellom C ++ 14 og C ++ 17 ble løst. På noen mål vil en klasse med et nullstørrelse underobjekt bli gitt feil når den kompileres som C ++ 17 eller C ++ 20.