Den 3 maj ägde den första offentliga utgåvan av den nionde versionen av GCC rum: GCC 9.1.
Den innehåller många betydande förbättringar och tillägg jämfört med den åttonde
version.
Allmänna förändringar
Alternativ
- Kommandon som accepterar storlek stöder nu 64-bitars värden och suffix för att specificera storlek;
- Tillagt alternativ -flive-patching,för att kontrollera optimeringar som är potentiellt destruktiva för dynamiska,kodersättning;
- Lade till --completion-alternativ för att stödja autokomplettering i kommandoskalet;
- Kompilatordiagnostik inkluderar nu radnummer (-fno-diagnostik-visa-radnummer) Och
typ information (fno-diagnostik-show-etiketter); - Tillagt alternativ -fdiagnostics-format=json för att mata ut diagnostik i JSON-format;
- Alternativ för att ange justering (-falign-funktioner, till exempel) kan nu acceptera ett par justeringsalternativ;
- Lade till alternativ för att filtrera listan med filer (-fprofile-filter-filer, -fprofile-exclude-filer), som styrs av profileraren;
- AddressSanitizer använder nu mer kompakt justering för att fånga ogiltiga åtkomster till variabler i stacken;
- Många resultatförbättringar -fopt-info;
- Tillagt alternativ -fsave-optimization-record för att spara optimeringsrapporten till en fil;
- Tillagt alternativ -fipa-stack-alignment и -fipa-referens-adresserbar.
Nya inbyggda funktioner
Nytt attribut
Andra
Många förbättringar av kodgenerering relaterade till:
- generering av switchkonstruktioner;
- interprocedurmässiga optimeringar;
- optimering baserad på profileringsinformation;
- optimering vid monteringsstadiet (LTO);
Även gcovs interna format är nu JSON, och det nya alternativet --använd-hethet-färger innebär färgning av kodrader baserat på hur ofta de används.
Språk
Kvalitet och fullständighet i genomförandet ÖppnaACC Språken C, C++ och Fortran fortsätter att förbättras.
C-liknande språk
- Partiellt stöd för OpenMP 5.0 har implementerats;
- Funktion tillagd __builtin_convertvector;
- Tillagd varning -Waddress-of-packed-medlem;
- Förbättringar av ett antal befintliga varningar;
- Feltexten när fel antal argument skickas till ett makro inkluderar nu deklarationen av själva makrot;
- Förbättringar av förslag till stavfel.
C
- Stöd _Static_assert med ett argument för -std=c2x (framtida C-standard);
- Ny varning -Wabsolut-värde, som fångar fel argumenttyp för funktioner som abs().
C + +
- Nya varningar: -Föråldrad kopia,
- Winit-lista-livstid,
-Obehövligt drag,
-Wpessimizing-move,
-Wclass-konvertering; - Arbete pågår med att implementera nya funktioner från den framtida standarden C++2a;
- Frontend lagrar nu mer exakt information om ett antal källkodselement, vilket gör att du kan visa mer detaljerad information i diagnostik;
- Förbättrad diagnostik för överbelastade funktioner, binära operatorer, funktionsanrop och formatsträngar;
- Lade till automatiska korrigeringar som stöds av vissa utvecklingsmiljöer för ett antal populära fel (saknade parenteser, namnutrymmen, stavfel, etc.).
libstdc ++
- C++17-implementeringen är inte längre experimentell;
- Lade till parallella algoritmer, , , A kräver inte längre -lstdc++fs;
- Förbättrat experimentellt stöd för C++2a ( , , std::bind_front, etc.);
- Stöd för att öppna filströmmar på Windows vars sökvägar innehåller tecken som inte är tecken;
- Inledande stöd på Windows;
- Initialt stöd för Networking TS.
D
D språkversion 2.076 ingår i GCC.
Fortran
- Fullt stöd för asynkron I/O;
- Implementerat BACK-argument för MINLOC och MAXLOC;
- Implementerade funktionerna FINLOC och IS_CONTIGOUS;
- Syntaxen för att komma åt komponenterna i komplexa tal har implementerats: c%re och c%im;
- Implementerad syntax str%len och a%kind;
- Implementerade C-deskriptorer och ISO_Fortran_binding.h header;
- Släppta krav på resultatet av funktionerna MAX och MIN när ett av argumenten är NaN;
- Tillagt alternativ -fdec-inkludera;
- Direktivet har lagts till INBYGGT.
libgccjit
- Funktion tillagd gcc_jit_context_add_driver_option.
Andra
Många arkitektur- och OS-specifika förändringar.
Källa: linux.org.ru