Developpez.com

Le Club des Développeurs et IT Pro

GCC 6.3 disponible

Cette version du système de compilation libre se concentre sur la correction de bogues et de régressions dans GCC 6.2

Le 2016-12-26 15:53:34, par Michael Guilloux, Chroniqueur Actualités
Sept mois après la sortie de la version majeure annuelle, numérotée 6.1, une deuxième itération du GNU Compiler Collection (GCC) est disponible : GCC 6.3. Pour rappel, GCC est une collection de compilateurs créés par le projet GNU. Il s’agit plus exactement d’un logiciel libre capable de compiler divers langages de programmation, dont C, C++, Objective-C, Java, Ada et Fortran. Il faut également noter qu’il est utilisé pour le développement de la plupart des logiciels libres.

La version 6.1 GCC sortie en avril dernier a introduit d’importants changements et améliorations dans tous les domaines. Côté C++, le compilateur est passé sur la norme C++14 par défaut, au lieu de C++98 auparavant. On a également enregistré l’implémentation de quelques fonctionnalités de C++17. Pour le domaine HPC, OpenMP 4.5 a été complètement implémenté, alors que l’implémentation de OpenACC 2.0a a de son côté été améliorée. Au niveau matériel, GCC 6.1 a embarqué la prise en charge des processeurs AMD Zen et des améliorations pour les plateformes ARM. Il faut encore ajouter que l’architecture PowerPC a reçu la compatibilité avec POWER9, un processeur de la gamme POWER conçu et produit par IBM et annoncé pour l'année 2017.

Comme GCC 6.2 publiée en août dernier, GCC 6.3 est une version corrective pour la branche GCC 6.x. Cette nouvelle itération contient des correctifs pour des régressions et des bogues dans GCC 6.2, avec plus de 79 bogues corrigés depuis la version précédente.

Vous trouverez sur GCC Bugzilla la liste des problèmes rapportés dans le système de suivi des bogues de GCC qui ont été corrigés dans la version 6.3. Il faut toutefois préciser que cette liste peut ne pas être complète, c'est-à-dire qu'il est possible que certains problèmes qui ont été corrigés n'y soient pas répertoriés. Cette version peut être téléchargée à partir du site GNU.org.

Il faut par ailleurs préciser que tous les nouveaux développements autour de la collection de compilateurs GNU sont centrés sur la prochaine version majeure : GCC 7, qui est attendue au début de l’année prochaine.

Sources : GCC 6 Release Series

Voir aussi :

Sortie de GCC 6.1 : cette version du système de compilation libre arrive avec C++14 activé par défaut et l'implémentation complète de OpenMP 4.5
Fedora et GCC 6 montrent de mauvaises pratiques de codage, la nouvelle version du compilateur refuse maintenant des constructions douteuses
Forum GCC
  Discussion forum
7 commentaires
  • frfancha
    Membre éprouvé
    Envoyé par dourouc05

    Code :
    1
    2
    3
    4
    5
    void in_order() {
      if (this == nullptr) return;
      left->in_order();
      right->in_order();
    }
    Cependant, avec cette optimisation (permise par le standard C++), le premier test sera toujours faux, puisque, par hypothèse, this est toujours un pointeur valide… et ce code plantera lamentablement à l’arrivée d’une feuille.
    Soit je suis très fatigué, soit l'exemple est complètement erroné: de toute façon à l'appel de la méthode (par left->in_order() par exemple) this n'est PAS null et l'élimination du test ne pose aucun problème.
    Ce qui pose problème et qui fait que ce code est pourri c'est l'appel left->in_order() sans vérifier que left est null ou pas, et ça n'a rien à voir avec l'optimisation.
    Non?
  • Envoyé par dourouc05

    [...]Une nouvelle optimisation fait parler d’elle : la propagation de valeurs considère désormais que le pointeur this en C++ (qui pointe vers l’objet courant) est toujours initialisé (sa valeur n’est jamais nullptr).[...]
    Il va sûrement falloir que je relise encore, mais c'est plutôt cool pour le destructeur.

    Envoyé par Michael Guilloux

    [...]Il faut par ailleurs préciser que tous les nouveaux développements autour de la collection de compilateurs GNU sont centrés sur la prochaine version majeure : GCC 7, qui est attendue au début de l’année prochaine.[...]
    Cool.
  • laerne
    Membre éprouvé
    J'aurais cru qu'une fonction non-virtuelle aurait été appelée en poussant `this` sur la stack en copiant directement le pointeur utilisé pour l'appel sans vérifier si c'est nullptr, mais en codant un test compilé avec GCC6.2, ce n'est pas le cas. Donc tu as raison.…