GCC 9.1


GCC 9.1

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
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

Anders

Talrijke architectonisch en OS-specifieke wijzigingen.

Bron: linux.org.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster