GCC 9.1


GCC 9.1

Le 3 mai, la première version publique de la neuvième version de GCC a été publiée : GCC 9.1.
Elle contient de nombreuses améliorations et ajouts par rapport à la version huit.
version.

Modifications générales

Options
  • Les commandes prenant une taille prennent désormais en charge des valeurs 64 bits et des suffixes pour indiquer la taille ;
  • Une option ajoutée -flive-patching, pour contrôler les optimisations potentiellement destructrices pour le remplacement de code dynamique ;
  • Une option -completion a été ajoutée pour prendre en charge l'auto-complétion dans l'interface de commande ;
  • Les diagnostics du compilateur incluent désormais les numéros de ligne (-fno-diagnostics-show-line-numbersDeep Speech
    des informations sur les types (-fno-diagnostics-show-labels);
  • Une option ajoutée -fdiagnostics-format=json pour afficher les diagnostics au format JSON ;
  • Options pour spécifier l'alignement (-falign-functions, par exemple) peuvent désormais accepter une paire d'options d'alignement ;
  • Des options ont été ajoutées pour filtrer la liste des fichiers (-fprofile-filter-files, -fprofile-exclude-files), qui sont soumis à un instrumentation pour le profileur ;
  • AddressSanitizer utilise maintenant un alignement plus compact pour attraper les accès incorrects aux variables sur la pile ;
  • De nombreuses améliorations dans l'output -fopt-info;
  • Une option ajoutée -fsave-optimization-record pour sauvegarder le rapport d'optimisation dans un fichier ;
  • Une option ajoutée -fipa-stack-alignment et -fipa-reference-addressable.
Nouvelles fonctions intégrées
Un nouvel attribut
Autre

De nombreuses améliorations de génération de code liées à :

  • la génération de constructions switch ;
  • les optimisations interprocédurales ;
  • les optimisations basées sur les informations de profiling ;
  • l'optimisation à la phase de linking (LTO) ;

Le format interne de gcov est désormais JSON, et la nouvelle option —use-hotness-colors active la coloration des lignes de code en fonction de leur fréquence d'utilisation.

Langages

Qualité et exhaustivité de l'implémentation OpenACC dans les langages C, C++, et Fortran continue de s'améliorer.

Langages de type C
  • Un support partiel de OpenMP 5.0 a été réalisé ;
  • Une fonction a été ajoutée __builtin_convertvector;
  • Un avertissement a été ajouté -Waddress-of-packed-member;
  • Améliorations dans un certain nombre d'avertissements existants ;
  • Le message d'erreur pour une mauvaise quantité d'arguments passés dans un macro inclut désormais la déclaration du macro lui-même ;
  • Améliorations dans les suggestions de correction des fautes de frappe.
C
  • Support de _Static_assert avec un argument pour -std=c2x (le futur standard C) ;
  • Un nouvel avertissement -Wabsolute-value, qui attrape un type d'argument incorrect pour des fonctions comme abs().
C++
  • Nouveaux avertissements : -Wdeprecated-copy,
    -Winit-list-lifetime,
    -Wredundant-move,
    -Wpessimizing-move,
    -Wclass-conversion;
  • Le travail est en cours pour mettre en œuvre de nouvelles fonctionnalités du futur standard C++ 2a;
  • Le frontend conserve désormais des informations plus précises sur un certain nombre d'éléments du code source, ce qui permet d'afficher des informations plus détaillées dans les diagnostics ;
  • Les diagnostics pour les fonctions surchargées, les opérateurs binaires, les appels de fonctions et les chaînes de format ont été améliorés ;
  • Des corrections automatiques prises en charge par certains environnements de développement ont été ajoutées pour un certain nombre d'erreurs populaires (parenthèses manquantes, espaces de noms, fautes de frappe, etc.).
libstdc++
  • La mise en œuvre de C++17 n'est plus expérimentale ;
  • Des algorithmes parallèles, <execution>, <memory_resource>, ont été ajoutés, et <filesystem> ne nécessite plus -lstdc++fs ;
  • Le support expérimental de C++ 2a (<bit>, <version>, std::bind_front, etc.) a été amélioré ;
  • Support de l'ouverture de fichiers sur Windows dont les chemins contiennent des caractères en dehors de char ;
  • Support initial de <filesystem> sur Windows ;
  • Support initial de Networking TS.
D

Le langage D version 2.076 est intégré dans GCC.

Fortran
  • Support complet des entrées/sorties asynchrones ;
  • L'argument BACK a été mis en œuvre pour MINLOC et MAXLOC ;
  • Les fonctions FINDLOC et IS_CONTIGUOUS ont été mises en œuvre ;
  • La syntaxe d'accès aux parties composites des nombres complexes a été mise en œuvre : c%re et c%im ;
  • La syntaxe str%len et a%kind a été mise en œuvre ;
  • Des descripteurs C et le fichier d'en-tête ISO_Fortran_binding.h ont été mis en œuvre ;
  • Les exigences concernant le résultat des fonctions MAX et MIN ont été assouplies lorsqu'un des arguments est NaN ;
  • Une option ajoutée -fdec-include;
  • Directive ajoutée BUILTIN.
libgccjit

Autre

Un grand nombre de modifications spécifiques à l'architecture et au système d'exploitation.

Source : linux.org.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster