Le 3 mai a eu lieu la première version publique de la neuvième version de GCC : GCC 9.1.
Il contient de nombreuses améliorations et ajouts significatifs par rapport au huitième
version.
Modifications générales
Options de
- Les commandes qui acceptent la taille prennent désormais en charge les valeurs 64 bits et les suffixes pour spécifier la taille ;
- Option ajoutée -flive-patch,pour contrôler les optimisations potentiellement destructrices du remplacement dynamique du code ;
- Ajout de l'option --completion pour prendre en charge la complétion automatique dans le shell de commande ;
- Les diagnostics du compilateur incluent désormais les numéros de ligne (-fno-diagnostics-show-line-numbers) Et
tapez les informations (fno-diagnostics-show-labels); - Option ajoutée -fdiagnostics-format=json pour générer des diagnostics au format JSON ;
- Options de spécification de l'alignement (-falign-fonctions, par exemple) peut désormais accepter quelques options d'alignement ;
- Ajout d'options pour filtrer la liste des fichiers (-fprofile-filter-fichiers, -fprofile-exclude-fichiers), qui sont instrumentés par le profileur ;
- AddressSanitizer utilise désormais un alignement plus compact pour intercepter les accès non valides aux variables de la pile ;
- De nombreuses améliorations de sortie -fopt-info;
- Option ajoutée -fsave-enregistrement-d'optimisation pour enregistrer le rapport d'optimisation dans un fichier ;
- Option ajoutée -alignement-de-pile-fipa и -fipa-référence-adressable.
Nouvelles fonctionnalités intégrées
Nouvel attribut
Autre
De nombreuses améliorations de la génération de code liées à :
- génération de constructions de commutateurs ;
- optimisations inter-procédurales ;
- optimisation basée sur les informations de profilage ;
- optimisation au stade de l'assemblage (LTO) ;
Le format interne de gcov est également désormais JSON, et la nouvelle option --use-hotness-colors implique de colorer les lignes de code en fonction de la fréquence à laquelle elles sont utilisées.
Langues
Qualité et exhaustivité de la mise en œuvre OuvrirACC les langages C, C++ et Fortran continuent de s'améliorer.
Langages de type C
- La prise en charge partielle d'OpenMP 5.0 a été implémentée ;
- Fonction ajoutée __builtin_convertvecteur;
- Avertissement ajouté -Adresse-du-membre emballé;
- Améliorations d'un certain nombre d'avertissements existants ;
- Le texte d'erreur lors du passage d'un nombre incorrect d'arguments à une macro inclut désormais la déclaration de la macro elle-même ;
- Améliorations des suggestions de correction de fautes de frappe.
C
- Prise en charge de _Static_assert avec un argument pour -std=c2x (futur standard C) ;
- Nouvel avertissement -Wabsolute-value, qui détecte le mauvais type d'argument pour des fonctions comme abs().
C + +
- Nouveaux avertissements : -W copie obsolète,
-Winit-list-durée de vie,
-Mouvement redondant,
-Wpessimizing-mouvement,
-Conversion de classe W; - Des travaux sont en cours pour implémenter les nouvelles fonctionnalités du futur standard C++2a;
- L'interface stocke désormais des informations plus précises sur un certain nombre d'éléments du code source, ce qui vous permet d'afficher des informations plus détaillées dans les diagnostics ;
- Diagnostics améliorés pour les fonctions surchargées, les opérateurs binaires, les appels de fonction et les chaînes de format ;
- Ajout de correctifs automatiques pris en charge par certains environnements de développement pour un certain nombre d'erreurs courantes (parenthèses manquantes, espaces de noms, fautes de frappe, etc.).
libstdc++
- L'implémentation C++17 n'est plus expérimentale ;
- Ajout d'algorithmes parallèles, , , UN ne nécessite plus -lstdc++fs ;
- Prise en charge expérimentale améliorée pour C++2a ( , , std::bind_front, etc.);
- Prise en charge de l'ouverture de flux de fichiers sous Windows dont les chemins contiennent des caractères autres que des caractères ;
- Prise en charge initiale sous Windows ;
- Prise en charge initiale de Networking TS.
D
La version 2.076 du langage D est incluse dans GCC.
Fortran
- Prise en charge complète des E/S asynchrones ;
- Implémentation de l'argument BACK pour MINLOC et MAXLOC ;
- Implémentation des fonctions FINDLOC et IS_CONTIGOUS ;
- La syntaxe d'accès aux composantes des nombres complexes a été implémentée : c%re et c%im ;
- Syntaxe implémentée str%len et a%kind ;
- Implémentation des descripteurs C et de l'en-tête ISO_Fortran_binding.h ;
- Exigences assouplies pour le résultat des fonctions MAX et MIN lorsque l'un des arguments est NaN ;
- Option ajoutée -fdec-include;
- Directive ajoutée BÂTI.
libgcccjit
- Fonction ajoutée gcc_jit_context_add_driver_option.
Autre
De nombreux changements spécifiques à l'architecture et au système d'exploitation.
Source: linux.org.ru