Résumé
LLVM (anciennement appelé Low Level Virtual Machine en français : « machine virtuelle de bas niveau ») est une infrastructure de compilateur conçue pour l'optimisation du code à la compilation, à l'édition de liens, voire à l'exécution ou durant les « temps morts » d'un programme, quel que soit le langage d'origine. LLVM permet de créer une machine virtuelle pour des langages similaires à Java et sa JVM, un générateur de code pour une architecture matérielle spécifique, et des optimiseurs de compilation indépendants de toute plate-forme et de tout langage. LLVM est indépendante des langages et des architectures : elle se charge de faire le lien vers un module spécifique au langage, et vers un générateur de code pour une machine particulière. Elle prend en charge les optimisations inter-procédurales (IPO) de haut niveau, propose des compilateurs statiques ou à la volée (JIT) et de nombreux composants dans différentes phases de développement (par exemple, du bytecode Java et des interfaces CIL de Microsoft .NET, une interface Python, une allocation de registres par coloration de graphe, etc). Le compilateur à la volée est capable d'optimiser des branches statiques inutiles pendant l'exécution d'un programme, et est par conséquent très pratique dans des cas où le programme a plusieurs options : la plupart pouvant être facilement diagnostiquées comme inutiles quel que soit l'environnement. C'est pour cette raison que, par exemple, cette infrastructure est utilisée dans le pipeline de certaines implémentations d'OpenGL et notamment sous Linux ou BSD, avec LLVMpipe au sein du module Gallium3D de Mesa 3D, ainsi que dans Mac OS X 10.5 (Leopard) pour fournir une prise en charge pour le matériel manquant. Jusqu'à la version 2.9, LLVM offrait une compilation C/C++ et ObjectiveC via LLVM-GCC. Depuis, DragonEgg remplace LLVM-GCC pour proposer, via un greffon gcc, une compilation complète des langages Ada, C, C++, Fortran et partiellement de Go, Java, Objective-C et Objective-C++. Surtout, LLVM propose un compilateur C, C++, Objective-C et Objective-C++ intitulé Clang.
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.