La nouvelle version de LLVM 9.0 est déjà sortie et voici ses nouveautés

LLVM

Après six mois de développement le lancement de la nouvelle version du projet LLVM 9.0 a été présenté, qui est une boîte à outils compatible GCC (compilateurs, optimiseurs et générateurs de code), qui compile les programmes en un code binaire intermédiaire d'instructions virtuelles de type RISC (une machine virtuelle de bas niveau avec un système d'optimisation à plusieurs niveaux).

Il est conçu pour optimiser le temps de compilation, le temps de liaison, le temps d'exécution dans tout langage de programmation que l'utilisateur souhaite définir. Initialement implémenté pour compiler C et C ++, Conception indépendante de la langue de LLVM et réussite du projet ont engendré une grande variété de langues, y compris Objective-C, Fortran, Ada, Haskell, le bytecode Java, Python, Ruby, ActionScript, GLSL, Clang, Rust, Gambas et autres.

Le pseudocode généré peut être converti à l'aide du compilateur JIT en instructions machine directement au moment de l'exécution du programme.

Nouvelles fonctionnalités majeures de LLVM 9.0

Parmi les nouvelles fonctionnalités de LLVM 9.0 trouver de l'aide pour supprimer la balise de développement expérimental de la plateforme RISC-V, Prise en charge C ++ pour OpenCL.

Une autre nouveauté qui se distingue par la possibilité de diviser le programme en parties chargées dynamiquement dans LLD et l'implémentation de la construction »asm goto» utilisée dans le code du noyau Linux.

En outre, il est également souligné que Libc ++ est arrivé avec le support de WASI (WebAssembly System Interface) et LLD ont introduit la prise en charge initiale de la liaison dynamique WebAssembly. Ajout de l'implémentation de l'expression spécifique à GCC »asm goto», qui vous permet de passer d'un bloc en ligne assemblé à une balise en code C.

Cette fonctionnalité est nécessaire pour construire le noyau Linux en mode »CONFIG_JUMP_LABEL = y« en utilisant Clang sur les systèmes x86_64. Compte tenu des changements ajoutés dans les versions précédentes, le noyau Linux peut maintenant être construit en Clang pour l'architecture x86_64 (auparavant, il n'était pris en charge que pour les architectures arm, aarch64, ppc32, ppc64le et mips.

La prise en charge des instructions BTI a été ajoutée (Indicateur de cible de branche) et PAC (code d'authentification de pointeur) pour l'architecture AArch64. Prise en charge considérablement améliorée des plates-formes MIPS, RISC-V et PowerPC.

En outre, Les projets Android et ChromeOS sont déjà passés à l'utilisation de Clang pour construire le noyau et Google teste Clang en tant que noyau de plate-forme de construction principal pour ses systèmes Linux en cours d'exécution.

Dans le futur, pendant le processus de compilation du noyau, il sera possible d'utiliser d'autres composants LLVM, y compris LLD, llvm-objcopy, llvm-ar, llvm-nm et llvm-objdump.

Une fonction de partition expérimentale a été ajoutée à l'éditeur de liens LLD, qui permet à un programme d'être divisé en plusieurs parties, dont chacune est placée dans un fichier ELF séparé. Cette fonctionnalité vous permet d'exécuter la partie principale du programme, qui, si nécessaire, chargera les composants restants dans le processus (par exemple, vous pouvez sélectionner la visionneuse PDF intégrée en tant que fichier séparé, qui ne sera téléchargé que lorsque l'utilisateur ouvre le fichier PDF).

D'autre part, les nombreuses améliorations apportées aux backends se démarquent également. pour les architectures X86, AArch64, ARM, SystemZ, MIPS, AMDGPU et PowerPC.

Par exemple, la prise en charge des instructions SVE2 et MTE (Memory Tagging Extensions) a été ajoutée pour l'architecture AArch64, la prise en charge de l'architecture Armv8.1-M et de l'architecture MVE ont été ajoutées au backend ARM.

Dans le cas d'AMDGPU, la prise en charge de l'architecture GFX10 a été ajoutée (Navi), la valeur par défaut est activée pour appeler une fonction et passer le DPP combiné activé (Data Primitives-Parallel).

Le débogueur LLDB a introduit la mise en évidence des couleurs des traces à l'envers; ajout de la prise en charge des blocs debug_types DWARF4 et DWARF5 debug_info;

Les utilitaires llvm-objcopy et llvm-strip ont ajouté la prise en charge des fichiers exécutables et des objets au format COFF.

Le backend de l'architecture RISC-V est stabilisé, qui n'est plus positionné comme expérimental et est construit par défaut. Prise en charge complète de la génération de code pour les variantes de jeu d'instructions RV32I et RV64I avec les extensions MAFDC.

source: http://releases.llvm.org/


Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  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.