Op 3 mei vond de eerste publieke release plaats van de negende versie van GCC: GCC 9.1.
Het bevat veel belangrijke verbeteringen en toevoegingen ten opzichte van de achtste
versie.
Algemene wijzigingen
Opties
- Commando's die grootte accepteren ondersteunen nu 64-bits waarden en achtervoegsels om de grootte te specificeren;
- Optie toegevoegd -flive-patching,om optimalisaties te controleren die potentieel destructief zijn voor dynamische codevervanging;
- --completion optie toegevoegd om automatische aanvulling in de opdrachtshell te ondersteunen;
- Compilerdiagnostiek omvat nu regelnummers (-fno-diagnostiek-toon-regelnummers) En
type informatie (fno-diagnostics-show-labels); - Optie toegevoegd -fdiagnostics-format=json om diagnostiek uit te voeren in JSON-formaat;
- Opties voor het opgeven van uitlijning (-falign-functies, bijvoorbeeld) kan nu een aantal uitlijningsopties accepteren;
- Opties toegevoegd voor het filteren van de lijst met bestanden (-fprofile-filterbestanden, -fprofile-exclude-bestanden), die worden geïnstrumenteerd door de profiler;
- AddressSanitizer maakt nu gebruik van compactere uitlijning om ongeldige toegang tot variabelen op de stapel op te vangen;
- Talrijke outputverbeteringen -fopt-info;
- Optie toegevoegd -fsave-optimalisatie-record om het optimalisatierapport in een bestand op te slaan;
- Optie toegevoegd -fipa-stack-uitlijning и -fipa-referentie-adresseerbaar.
Nieuwe ingebouwde functies
- __ingebouwde_verwacht_met_waarschijnlijkheid;
- __ingebouwd_heeft_kenmerk;
- __ingebouwde_speculatie_veilige_waarde.
Nieuw attribuut
Ander
Talrijke verbeteringen voor het genereren van code met betrekking tot:
- genereren van schakelconstructies;
- interprocedurele optimalisaties;
- optimalisatie op basis van profileringsinformatie;
- optimalisatie in de assemblagefase (LTO);
Ook het interne formaat van gcov is nu JSON, en de nieuwe optie --gebruik-hotness-kleuren omvat het kleuren van coderegels op basis van hoe vaak ze worden gebruikt.
Talen
Kwaliteit en volledigheid van de uitvoering OpenACC de talen C, C++ en Fortran blijven verbeteren.
C-achtige talen
- Gedeeltelijke ondersteuning voor OpenMP 5.0 is geïmplementeerd;
- Functie toegevoegd __ingebouwde_convertvector;
- Waarschuwing toegevoegd -Wadadres-van-verpakt-lid;
- Verbeteringen aan een aantal bestaande waarschuwingen;
- De fouttekst bij het doorgeven van het verkeerde aantal argumenten aan een macro bevat nu de declaratie van de macro zelf;
- Verbeteringen aan suggesties voor typfoutcorrectie.
C
- Ondersteun _Static_assert met één argument voor -std=c2x (toekomstige C-standaard);
- Nieuwe waarschuwing -Wabsolute-waarde, die het verkeerde argumenttype opvangt voor functies zoals abs().
C + +
- Nieuwe waarschuwingen: -Wdeprecated-kopie,
-Winit-lijst-levensduur,
-Wredundant-zet,
-Wpessimizing-zet,
-Wclass-conversie; - Er wordt gewerkt aan de implementatie van nieuwe functies van de toekomstige standaard C++2a;
- De frontend slaat nu nauwkeurigere informatie op over een aantal broncode-elementen, waardoor u meer gedetailleerde informatie in de diagnostiek kunt weergeven;
- Verbeterde diagnostiek voor overbelaste functies, binaire operators, functieaanroepen en formatstrings;
- Automatische oplossingen toegevoegd die door sommige ontwikkelomgevingen worden ondersteund voor een aantal populaire fouten (ontbrekende haakjes, naamruimten, typefouten, enz.).
libstdc++
- De C++17-implementatie is niet langer experimenteel;
- Parallelle algoritmen toegevoegd, , , A vereist niet langer -lstdc++fs;
- Verbeterde experimentele ondersteuning voor C++2a ( , , std::bind_front, enz.);
- Ondersteuning voor het openen van bestandsstreams op Windows waarvan de paden niet-char-tekens bevatten;
- Initiële ondersteuning op Windows;
- Initiële ondersteuning voor Networking TS.
D
D-taalversie 2.076 is opgenomen in GCC.
Fortran
- Volledige ondersteuning voor asynchrone I/O;
- Geïmplementeerd BACK-argument voor MINLOC en MAXLOC;
- FINDLOC- en IS_CONTIGOUS-functies geïmplementeerd;
- De syntaxis voor toegang tot de componenten van complexe getallen is geïmplementeerd: c%re en c%im;
- Geïmplementeerde syntaxis str%len en a%kind;
- Geïmplementeerde C-descriptors en ISO_Fortran_binding.h header;
- Versoepelde vereisten voor het resultaat van de MAX- en MIN-functies wanneer een van de argumenten NaN is;
- Optie toegevoegd -fdec-include;
- Richtlijn toegevoegd GEBOUWD.
libgccjit
- Functie toegevoegd gcc_jit_context_add_driver_option.
Ander
Veel architectuur- en OS-specifieke veranderingen.
Bron: linux.org.ru