Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le compilateur C++ clang passe en version 10
Et officialise le support des concepts du C++20

Le , par LittleWhite

16PARTAGES

16  0 
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

Que pensez-vous de Clang ? L'utilisez-vous dans vos projets ? Pourquoi ?

Source

Notes de publication

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Oxyale
Membre actif https://www.developpez.com
Le 28/05/2020 à 14:58
Ce compilateur est devenu très bon. Je l'utilise en priorité pour les premières erreurs de build afin de mieux cerner mes problèmes.

Il m'aide avec gcc 10.1 à trouver et à mieux optimiser mes quelques programmes personnels (ex alignement mémoire -> défaut de page).

Concernant les builds finaux j'utilise gcc car il compile encore mieux mais cela se tient à un cheveu parfois et puis je fais des test régulièrement et c'est incroyable que le projet LLVM ait réussi à en arriver la.

Je pense que ce projet à vraiment bousculé gcc : comme quoi un peu de concurrence à vraiment aider ce projet à avancer et à rester dans l'air du temps.

Pour cela j'utilise ce package pour windows : http://winlibs.com/
Il est régulièrement mis à jour et très simple tout est fusionné dans le répertoire /bin ce qui aide grandement à switcher de l'un à l'autre une fois l'IDE configuré avec des profils de compilateur.
Je précise qu'il y a les versions 32 bits et 64 bits.
Et surprise : la version 10 de chacun de ces compilateurs y sont!

Il manque des outils à la Intel Compiler Studio et ces compilateurs seront encore plus proche de la perfection!!!

En tout cas : chapeau à eux!
0  0