Op 3 mei vond de eerste publieke release van versie 9 van GCC plaats: GCC 9.1.
Het bevat een aantal belangrijke verbeteringen en aanvullingen ten opzichte van de achtste
versie.
Algemene wijzigingen
Opties
- Commando's die een grootte accepteren, ondersteunen nu 64-bits waarden en suffixen om de grootte aan te geven;
- Een optie is toegevoegd -flive-patching, voor het beheren van optimalisaties die potentiëel destructief zijn voor dynamische codevervanging;
- De optie —completion is toegevoegd ter ondersteuning van autocompletion in de commandoregel;
- Compilerdiagnoses omvatten nu regelnummers (-fno-diagnostics-show-line-numbers) en
informatie over typen (fno-diagnostics-show-labels); - Een optie is toegevoegd -fdiagnostics-format=json voor het uitvoeren van diagnoses in JSON-indeling;
- Opties voor het specificeren van uitlijning (-falign-functions, bijvoorbeeld) kunnen nu een paar uitlijningsopties accepteren;
- Er zijn opties toegevoegd voor het filteren van de lijst met bestanden (-fprofile-filter-files, -fprofile-exclude-files), die aan instrumentatie door de profiler worden onderworpen;
- AddressSanitizer gebruikt nu een compactere uitlijning voor het opsporen van ongeldige toegang tot variabelen op de stack;
- Talrijke verbeteringen in de output -fopt-info;
- Een optie is toegevoegd -fsave-optimization-record voor het opslaan van het optimaliseringsrapport in een bestand;
- Een optie is toegevoegd -fipa-stack-alignment en -fipa-reference-addressable.
Nieuwe ingebouwde functies
Nieuwe attribuut
- copy.
Anders
Talrijke verbeteringen in de codegeneratie met betrekking tot:
- de generatie van switch-structuren;
- interprocedurale optimalisaties;
- optimalisatie gebaseerd op profielinformatie;
- optimalisatie tijdens de bouwfase (LTO);
Ook is het interne formaat van gcov nu JSON, en de nieuwe optie —use-hotness-colors voegt kleurcodering toe aan rijen code op basis van hun gebruiksfrequentie.
Talen
Kwaliteit en volledigheid van de implementatie OpenACC in de talen C, C++, en Fortran blijven verbeteren.
C-achtige talen
- De gedeeltelijke ondersteuning van OpenMP 5.0 is gerealiseerd;
- De functie is toegevoegd __builtin_convertvector;
- Er is een waarschuwing toegevoegd -Waddress-of-packed-member;
- Verbeteringen in een aantal bestaande waarschuwingen;
- De foutmelding bij het doorgeven van een onjuist aantal argumenten aan een macro bevat nu de declaratie van de macro zelf;
- Verbeteringen in de voorstellen voor het corrigeren van typfouten.
C
- Ondersteuning voor _Static_assert met één argument voor -std=c2x (de toekomstige C-standaard);
- Een nieuwe waarschuwing -Wabsolute-value, die het onjuiste argumenttype voor functies zoals abs() opspoort.
C++
- Nieuwe waarschuwingen: -Wdeprecated-copy,
-Winit-lijst-levenstijd,
-Woverbodige-verplaatsing,
-Wpessimiserende-verplaatsing,
-Wklasse-conversie; - Er wordt gewerkt aan de implementatie van nieuwe mogelijkheden uit de toekomstige standaard C++ 2a;
- De frontend slaat nu nauwkeurigere informatie op over een aantal elementen van de broncode, waardoor gedetailleerdere informatie in de diagnoses weergegeven kan worden;
- De diagnostiek voor overbelaste functies, binaire operatoren, functiewezigingen en opmaakstrings is verbeterd;
- Ondersteunde automatische correcties voor een aantal veelvoorkomende fouten (ontbrekende haakjes, namespaces, typfouten, enz.) zijn toegevoegd in sommige ontwikkelomgevingen.
libstdc++
- De implementatie van C++17 is niet langer experimenteel;
- Parallelle algoritmes, <execution>, <memory_resource>, en <filesystem> vereisen niet langer -lstdc++fs;
- Verbeterde experimentele ondersteuning voor C++ 2a (<bit>, <version>, std::bind_front, enz.);
- Ondersteuning voor het openen van bestanden op Windows met paden die tekens bevatten die buiten char vallen;
- Initiële ondersteuning voor <filesystem> op Windows;
- Initiële ondersteuning voor Networking TS.
D
De D-taal versie 2.076 is opgenomen in GCC.
Fortran
- Volledige ondersteuning voor asynchrone invoer/uitvoer;
- Argument BACK is geïmplementeerd voor MINLOC en MAXLOC;
- De functies FINDLOC en IS_CONTIGUOUS zijn geïmplementeerd;
- De syntaxis voor toegang tot de componenten van complexe getallen: c%re en c%im is geïmplementeerd;
- De syntaxis str%len en a%kind is geïmplementeerd;
- C-descriptoren en de header ISO_Fortran_binding.h zijn geïmplementeerd;
- De eisen voor de resultaten van de functies MAX en MIN zijn versoepeld wanneer een van de argumenten NaN is;
- Een optie is toegevoegd -fdec-include;
- Nieuwe richtlijn toegevoegd BUILTIN.
libgccjit
- De functie is toegevoegd gcc_jit_context_add_driver_option.
Anders
Talrijke architectonisch en OS-specifieke wijzigingen.
Bron: linux.org.ru

