Programmering

GCC 10-serie compilere ankommer i større opgradering

GCC (GNU Compiler Collection) 10.1, en større udgivelse af platformen, blev offentliggjort den 7. maj 2020 med højdepunkter inklusive C ++ 20-funktioner og C2X-sprogstøtte. C2X er den næste store revision af C-sproget, der forventes i 2022.

Udgivelsesnoter til GCC 10 viser, at en lang række C ++ 20-funktioner er blevet implementeret, herunder tilladelse til inline-samling i constexpr-funktioner og udvidelse af strukturerede bindinger. Også for C ++ 20 tillader GCC 10 konverteringer til arrays med ukendt bund, tillader triviel standardinitialisering i constexpr-sammenhænge, ​​tilføjer constinit nøgleord og udfasetflygtige nøgleord.

For C2X, den kommende revision af ISO C-standarden, understøttes flere funktioner med syntaksen-std = c2x og -std + gnu2x. Blandt disse er strftime format kontrol understøtter % OB og % Ob formater og UTF-8 karakterkonstanter ved hjælp af u8 '' syntaksen.

GCC, der har eksisteret i mere end 33 år, inkluderer frontendere og biblioteker til C, C ++, Fortran, Ada, Go og D. En bulletin er blevet sendt til portering til GCC 10. Andre nye funktioner i GCC 10.1 inkluderer

  • Indbyggede funktioner er tilføjet, inklusive en has_builtin preprocessor-operatør, der kan bruges til at spørge support til indbyggede funktioner leveret af GCC og andre compilere, der understøtter det.
  • Kommandomuligheder er tilføjet. Disse inkluderer-falllokation-dce, for at fjerne unødvendige par af ny og slet operatører og -fanalyzer, for at aktivere et nyt statiske analysepassage og tilhørende advarsler. Sidstnævnte mulighed skal betragtes som i eksperimentel fase.
  • Interprocedurelle optimeringsforbedringer blev foretaget. Disse inkluderer genimplementering af de interprocedurelle skalære udskiftninger af aggregater (IPA-SRA), der blev genimplementeret for at arbejde på link-tid. IPA-SRA kan nu også fjerne computing og returnere ubrugte returværdier.
  • Forbedringer af optimering af linktid inkluderer en ny binær ito-dump. Programmet kan dumpe forskellige oplysninger om en LTO byte objektfil.
  • Der er foretaget profildrevne optimeringsforbedringer, herunder forbedring af profilvedligeholdelse under kompilering og varm / kold partitionering.
  • For C-familien er adgang funktion og type attribut er tilføjet for at beskrive, hvordan en funktion får adgang til objekter, der sendes til den ved hjælp af markør eller reference, og for at knytte sådanne argumenter til heltalargumenter, der angiver objektstørrelse. Attributten bruges til at muliggøre detektering af ugyldige adganger med brugerdefinerede funktioner. Der er også nye advarsler og forbedringer af eksisterende advarsler. En advarsel, -Wzero-længde-grænseradvarer om adgang til elementer i nul-længde-arrays, der kan overlappe andre medlemmer af det samme objekt.
  • En ABI-inkompatibilitet mellem C ++ 14 og C ++ 17 blev rettet. På nogle mål sendes en klasse med et underobjekt i nul størrelse forkert, når de kompileres som C ++ 17 eller C ++ 20.