Le compilateur GCC GNU ajoute le support C ++ 17

Avec la version 7.1 de GCC (GNU Compiler Collection), publiée cette semaine, la plate-forme obtient un support précoce pour la norme C ++ 17 et les améliorations de diagnostic.

La version 7.1 a un frontal C ++ avec un support expérimental pour tous les brouillons de spécification C ++ 17. Les -std=c++1zet les -std=gnu++1zoptions et libstdc++sont pris en charge, et la bibliothèque a le plus C ++ 17 projet de bibliothèque fonctionnalités implémentées. La version antérieure de GCC 6.1 respectait la norme C ++ 14.

La série GCC 7 diffère des versions précédentes en utilisant LRA (Local Register Allocator) par défaut pour les nouvelles cibles et en dépréciant les extensions Cilk + vers les langages C et C ++. En outre, certains comportements ont été assouplis afin d'améliorer les performances de compilation ou d'exécution. Cependant, certains changements pourraient "causer des problèmes" lors du portage vers GCC 7, selon les notes de publication, qui citent des problèmes de préprocesseur et C, ainsi que des problèmes de langage C ++, tels que des règles plus strictes pour les modèles. "GCC 7 n'accepte plus diverses constructions mal formées impliquant l'utilisation de modèles", disent les notes.

GCC 7.1 renforce également les diagnostics émis, y compris les emplacements améliorés, et des améliorations de l'optimiseur apparaissent dans toutes les optimisations intra et interprocédurales, les optimisations de temps de liaison et divers back-ends cibles, tels que les ajouts de passe de fusion de magasin, l'optimisation du levage de code, le fractionnement de boucle, et améliorations de l'emballage rétractable. De plus, le désinfectant d'adresses de GCC peut désormais signaler les utilisations des variables après qu'elles ont quitté leur champ d'application. GCC peut être configuré pour le déchargement de l'API OpenMP vers les GPGPU Nvidia PTX, mais certains codes compilés avec des versions plus anciennes de GCC peuvent nécessiter des ajustements. La collection comprend des frontaux pour C, C ++, Objective-C, Fortran, Ada et Go.