Les compilateurs de la série GCC 10 arrivent dans une mise à jour majeure
GCC (GNU Compiler Collection) 10.1, une version majeure de la plate-forme, a été publiée le 7 mai 2020, avec des faits saillants, notamment les capacités C ++ 20 et la prise en charge du langage C2X. C2X est la prochaine révision majeure du langage C, prévue pour 2022.
Les notes de publication pour GCC 10 montrent qu'une multitude de fonctionnalités C ++ 20 ont été implémentées, notamment l'autorisation d'assemblage en ligne dans les fonctions constexpr et l'extension des liaisons structurées. Aussi pour C ++ 20, GCC 10 autorise les conversions en tableaux de bornes inconnues, permet une initialisation par défaut triviale dans des contextes constexpr, ajoute le constinit
mot - clé et désapprouve le volatile
mot - clé.
Pour C2X, la prochaine révision de la norme ISO C, plusieurs fonctionnalités sont prises en charge avec la syntaxe -std=c2x
et -std+gnu2x
. Parmi ceux - ci sont le strftime
format de vérification supportant les %OB
et les %Ob
formats et les constantes de caractères UTF-8 en utilisant le U8' 'syntaxe.
GCC, qui existe depuis plus de 33 ans, comprend des frontaux et des bibliothèques pour C, C ++, Fortran, Ada, Go et D. Un bulletin a été publié sur le portage vers GCC 10. D'autres nouvelles fonctionnalités de GCC 10.1 incluent
- Des fonctions intégrées ont été ajoutées, y compris un
has_builtin
opérateur de préprocesseur qui peut être utilisé pour interroger la prise en charge des fonctions intégrées fournies par GCC et d'autres compilateurs qui le prennent en charge. - Des options de commande ont été ajoutées. Ceux - ci comprennent
-fallocation-dce
, d'éliminer les paires inutiles denew
et lesdelete
opérateurs, et-fanalyzer
, afin de permettre une nouvelle passe d'analyse statique et avertissements associés. Cette dernière option doit être considérée comme étant en phase expérimentale. - Des améliorations d'optimisation interprocédurale ont été apportées. Il s'agit notamment de la ré-implémentation des remplacements scalaires inter-procéduraux des agrégats (IPA-SRA) qui ont été réimplémentés pour fonctionner au moment de la liaison. IPA-SRA peut désormais également supprimer le calcul et renvoyer les valeurs de retour inutilisées.
- Les améliorations de l'optimisation du temps de liaison incluent un nouveau binaire
ito-dump
. Le programme peut vider diverses informations sur unbyte
fichier objet LTO . - Des améliorations d'optimisation basée sur les profils ont été apportées, notamment l'amélioration de la maintenance des profils pendant la compilation et le partitionnement chaud / froid.
- Pour la famille C, la
access
fonction et l'type
attribut ont été ajoutés pour décrire comment une fonction accède aux objets qui lui sont passés par un pointeur ou une référence, et pour associer ces arguments à des arguments entiers indiquant la taille de l'objet. L'attribut est utilisé pour activer la détection des accès invalides par des fonctions définies par l'utilisateur. Il existe également de nouveaux avertissements et des améliorations aux avertissements existants. Un avertissement-Wzero-length-bounds
,, met en garde contre l'accès aux éléments de tableaux de longueur nulle qui pourraient chevaucher d'autres membres du même objet. - Une incompatibilité ABI entre C ++ 14 et C ++ 17 a été corrigée. Sur certaines cibles, une classe avec un sous-objet de taille zéro serait transmise de manière incorrecte lors de la compilation en C ++ 17 ou C ++ 20.