
Et apporte le support des concepts du C++20
Le compilateur C, C++ et Objective C open source Clang est maintenant disponible en version 10.0.0 (ainsi que l'infrastructure LLVM dans laquelle Clang est un frontend). L'un des grands ajouts de cette version est le support des concepts, nouveauté du C++20. Vous pourrez l'activer grâce à l'option -std=c++2a. L'ancienne option -fconcepts-ts a été dépréciée. Évidemment, ce n'est pas le seul changement. Voici un résumé :
- la compilation se fait maintenant dans le même processus que le processus lançant la compilation. L'ancien comportement (un sous-processus séparé) peut être rétabli avec l'option -fno-integrated-cc1 ;
- le diagnostic des sources a été amélioré :
- -Wtautological-overlap-compare ajoute un avertissement sur les nombres négatifs et types non entiers,
- -Wbitwise-conditional-parentheses ajoute un avertissement sur la précédence lorsque les opérateurs bit à bit & et | sont combinés avec l'opérateur ternaire ?:,
- ajout d'un avertissement sur l'indentation trompeuse qui pourrait induire une mauvaise lecture du code (indentation d'un code, alors qu'il ne se trouve pas dans un bloc) (-Wmisleading-indentation) (c'est une reprise de l'avertissement déjà présent dans GCC),
- désactivation de -Wbitwise-op-parentheses et -Wlogical-op-parentheses par défaut,
- ajout d'un avertissement d'utilisation d'un mauvais type lors d'une division reposant sur sizeof() (par exemple, pour trouver la taille d'un tableau statique) (-Wsizeof-array-div) ;
- ajout de vérification sur le déroulement du programme (Control Flow Guard) spécifique à Windows ;
- respect de l'élision de copie du C++17 ;
- correction des listes d'initialisations ;
- correction de l'opérateur virgule , ;
- ajout d'une option -fgnuc-version= pour contrôler la valeur des macros __GNUC__ ;
- ajout de l'attribut __attribute__((target("branch-protection=..."))) ;
- le comportement de gnu_inline est calé sur celui-ci de GCC lors d'une utilisation sans le mot-clé extern ;
- amélioration de l'analyseur statique et du sanitizer de comportement indéfini (UBSan) ;
- amélioration du support des noyaux OpenCL ;
- ajout de fonctionnalités et amélioration du support d'OpenMP 5 (activable avec l'option -fopenmp-version=50.
La liste complète des changements de Clang est disponible dans les notes de publication. Aussi, vous pouvez découvrir les changements globaux à LLVM dans cette page dédiée.
Votre opinion

Source
Notes de publication
Vous avez lu gratuitement 1 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.