LLVM 13.0 arrive avec des améliorations de support et plus

 

LLVM Après six mois de développement, le lancement de la nouvelle version du projet « LLVM 13.0 » vient d'être présenté Conforme à GCC (compilateurs, optimiseurs et générateurs de code) qui compile les programmes en bitcode intermédiaire d'instructions virtuelles similaires à RISC (une machine virtuelle de bas niveau avec un système d'optimisation à plusieurs niveaux).

Dans cette nouvelle version, divers changements et nouveautés ont été ajoutés, dont améliorations de l'assistance mises en évidence ainsi que l'implémentation des nouvelles fonctionnalités de C++ 20 et C++ 2b entre autres.

Nouvelles fonctionnalités majeures de LLVM 13.0

Dans cette nouvelle version, nous pouvons trouver que set ajout de l'option "-ehcontguard" pour utiliser la technologie CET (Windows Control-flow Enforcement Technology) pour protéger dans la phase de gestion des exceptions de l'exécution d'exploits construits à l'aide de techniques de programmation orientée retour (ROP).

En outre, etLe projet debuginfo-test a été renommé en cross-project-tests et il est conçu pour tester les composants de plusieurs projets, sans se limiter aux informations de débogage, et le système de génération prend en charge la création de plusieurs distributions, par exemple une avec des utilitaires et l'autre avec des bibliothèques de développeurs.

Par ailleurs Libc ++ continue d'implémenter les nouvelles fonctionnalités des normes C ++ 20 et C ++ 2b, y compris l'achèvement de la bibliothèque « concepts », plus ajout de la prise en charge de std : système de fichiers pour Windows basé sur MinGW, séparez également les fichiers d'en-tête , et et l'option de construction LIBCXX_ENABLE_INCOMPLETE_FEATURES a été ajoutée pour désactiver les fichiers d'en-tête avec des fonctionnalités incomplètement implémentées.

Alors que le backend pour l'architecture AArch64 prend en charge les extensions Armv9-A RME (Realm Management Extension) et SME (Scalable Matrix Extension) en assembleur, Prise en charge ISA V68 / HVX ajoutée au backend d'architecture Hexagon et au backend x86 compatibilité améliorée avec les processeurs AMD Zen 3 et ajout de la prise en charge des APU GFX1013 RDNA2 au backend AMDGPU.

Les capacités de l'éditeur de liens LLD, qui implémente la prise en charge des processeurs Big-endian Aarch64, ont également été étendues et le backend Mach-O a été amené à un état permettant de lier des programmes ordinaires. Il inclut les améliorations nécessaires pour lier Glibc à l'aide de LLD.

L'utilitaire llvm-mca (Machine Code Analyzer) ajoute la prise en charge des processeurs de tuyaux superscalaires dans l'ordre, tels que ARM Cortex-A55.

Le débogueur LLDB pour la plate-forme AArch64 fournit une prise en charge complète de l'authentification du pointeur, Des registres MTE (MemTag, Memory Tagging Extension) et SVE, ainsi que des commandes ont été ajoutés qui vous permettent de lier des balises à chaque opération d'allocation de mémoire et d'organiser, lors de l'accès à la mémoire, la vérification du pointeur qui doit être associé à la balise correctement.
Le débogueur LLDB et l'interface Fortran - Flang ont été ajoutés aux assemblages binaires générés par le projet.

Quant à la Clang 13.0 met en évidence les améliorations :

  • La prise en charge des appels de file d'attente garantis (un appel de sous-programme à la fin d'une fonction, qui forme une récursivité de file d'attente si le sous-programme s'appelle lui-même) a été implémentée.
  • Ajout des indicateurs "-Wunused-but-set-parameter" et "-Wunused-but-set-variable" pour afficher un avertissement si un paramètre ou une variable est défini mais non utilisé.
  • Ajout de l'indicateur "-Wnull-pointer-subtraction" pour afficher un avertissement si le code peut conduire à un comportement indéfini en raison de l'utilisation d'un pointeur null dans les opérations de soustraction.
  • Ajout du drapeau "-fstack-use" pour générer pour chaque fichier de code un fichier ".su" supplémentaire qui contient des informations sur la taille des cadres de pile pour chaque fonction définie dans le fichier traité.
  • Un nouveau type de sortie a été ajouté à l'analyseur statique, "sarif-html", qui se traduit par la génération de rapports simultanément aux formats HTML et Sarif.
  • Ajout d'une nouvelle vérification pour allocClassWithName. Lorsque l'option "-analyzer-display-progress" est spécifiée, le temps d'analyse pour chaque fonction est affiché. L'analyseur de pointeur intelligent (alpha.cplusplus.SmartPtr) est presque prêt.
  • La prise en charge a été implémentée pour les directives de transformation de boucle ("#pragma omp unrol" et "#pragma omp tile"), définies dans la spécification OpenMP 5.1.
  • Une grande partie des nouveaux contrôles ont été ajoutés à linter clang-tidy.

Enfin Si vous souhaitez en savoir plus, vous pouvez vérifier les détails dans le lien suivant.


Le contenu de l'article adhère à nos principes de éthique éditoriale. Pour signaler une erreur, cliquez sur c'est par ici !.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.