Den 3. maj blev den første offentlige udgave af GCC version 9.1 lanceret.
Den indeholder adskillige væsentlige forbedringer og tilføjelser i forhold til den ottende
version.
Generelle ændringer
Muligheder
- Funktioner, der håndterer størrelser, understøtter nu 64-bit værdier og suffikser til angivelse af størrelse;
- Der er tilføjet en mulighed -flive-patching, til at styre optimeringer, som potentielt kan være destruktive for dynamisk kodeudskiftning;
- Der er tilføjet en mulighed —completion til at understøtte autoudfyldning i kommandolinjen;
- Kompilatorens diagnostik inkluderer nu linjenumre (-fno-diagnostics-show-line-numbers) og
oplysninger om typer (fno-diagnostics-show-labels); - Der er tilføjet en mulighed -fdiagnostics-format=json til at outputte diagnostik i JSON-format;
- Muligheder for at angive justering (-falign-functions, for eksempel) kan nu tage et par justeringsmuligheder;
- Der er tilføjet muligheder for at filtrere filoversigten (-fprofile-filter-files, -fprofile-exclude-files), som er underlagt instrumentering af profileringsværktøjet;
- AddressSanitizer bruger nu en mere kompakt justering for at fange ulovlige adgang til variabler på stakken;
- Talrige forbedringer i output -fopt-info;
- Der er tilføjet en mulighed -fsave-optimization-record til at gemme optimeringsrapporten i en fil;
- Der er tilføjet en mulighed -fipa-stack-alignment og -fipa-reference-addressable.
Nye indbyggede funktioner
Ny attribut
- copy.
Andet
Mange forbedringer i kodegenereringen relateret til:
- generering af switch-konstruktioner;
- inter-procedural optimeringer;
- optimering baseret på profileringsinformation;
- optimeringer under bygningen (LTO);
Desuden er det interne format for gcov nu JSON, og den nye mulighed —use-hotness-colors giver mulighed for at farve kodelinjer afhængigt af hvor ofte de bruges.
Sprog
Kvalitet og fuldstændighed af implementeringen OpenACC i sprog som C, C++, og Fortran fortsætter med at forbedres.
C-lignende sprog
- Delvis understøttelse af OpenMP 5.0 er implementeret;
- Tilføjet en funktion __builtin_convertvector;
- Advarsel tilføjet -Waddress-of-packed-member;
- Forbedringer i en række eksisterende advarsler;
- Fejlmeddelelsen ved forkerte antal argumenter i makroer inkluderer nu selve makroens deklaration;
- Forbedringer i forslag til retskrivningsfejl.
C
- Understøttelse af _Static_assert med et argument for -std=c2x (den kommende C-standard);
- Ny advarsel -Wabsolute-value, som fanger forkerte argumenttyper for funktioner som abs().
C++
- Nye advarsler: -Wdeprecated-copy,
-Winit-list-lifetime,
-Wredundant-move,
-Wpessimizing-move,
-Wclass-conversion; - Der arbejdes på at implementere nye funktioner fra den kommende standard C++ 2a;
- Frontend gemmer nu mere præcise oplysninger om en række elementer i kildeteksten, hvilket muliggør mere detaljerede oplysninger i diagnostik;
- Forbedret diagnosticering for overbelastede funktioner, binære operatorer, funktionskald og formateringsstrenge;
- Automatiske rettelser understøttet af nogle udviklingsmiljøer er tilføjet for en række populære fejl (manglende parenteser, navnerum, tastefejl osv.).
libstdc++
- Implementeringen af C++17 er ikke længere eksperimentel;
- Parallelle algoritmer, <execution>, <memory_resource>, og <filesystem> kræver ikke længere -lstdc++fs;
- Forbedret eksperimentel support for C++ 2a (<bit>, <version>, std::bind_front osv.);
- Support til åbning af filstrømme på Windows, hvor stierne indeholder tegn, der går ud over char;
- Indledende support for <filesystem> på Windows;
- Indledende support for Networking TS.
D
Sprog D version 2.076 er inkluderet i GCC.
Fortran
- Fuldt support af asynkron input/output;
- Argumentet BACK for MINLOC og MAXLOC er implementeret;
- Funktionerne FINDLOC og IS_CONTIGUOUS er implementeret;
- Adgangssyntax til sammensatte dele af komplekse tal: c%re og c%im er implementeret;
- Syntax til str%len og a%kind er implementeret;
- C-deskriptorer og headeren ISO_Fortran_binding.h er implementeret;
- Kravene til resultat af funktionerne MAX og MIN er lempet, når et af argumenterne er NaN;
- Der er tilføjet en mulighed -fdec-include;
- Tilføjet direktiv BUILTIN.
libgccjit
- Tilføjet en funktion gcc_jit_context_add_driver_option.
Andet
En række arkitektur- og OS-specifikke ændringer.
Kilde: linux.org.ru

