Programmering

GCC 10-serien kompilatorer kommer i større oppgradering

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 av ny og slett 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 LTO byte objektfil.
  • Profildrevne optimaliseringsforbedringer er gjort, inkludert forbedring av profilvedlikehold under kompilering og varm / kald partisjonering.
  • For C-familien, adgang funksjon og type 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.
$config[zx-auto] not found$config[zx-overlay] not found