Key points are not available for this paper at this time.
Descrevemos o LLVM (máquina virtual de baixo nível), uma estrutura de compilador projetada para suportar análise e transformação de programas de forma transparente e contínua para programas arbitrários, fornecendo informações de alto nível para transformações de compilador em tempo de compilação, tempo de link, tempo de execução e no tempo ocioso entre as execuções. O LLVM define uma representação de código comum e de baixo nível na forma de atribuição única estática (SSA), com vários recursos novos: um sistema de tipos simples e independente de linguagem que expõe os primitivos comumente usados para implementar recursos de linguagens de alto nível; uma instrução para aritmética de endereços tipados; e um mecanismo simples que pode ser usado para implementar uniformemente e eficientemente os recursos de tratamento de exceções de linguagens de alto nível (e setjmp/longjmp em C). A estrutura de compilador e a representação de código do LLVM juntas fornecem uma combinação de capacidades chave que são importantes para a análise e transformação prática e contínua de programas. Até onde sabemos, nenhuma abordagem de compilação existente fornece todas essas capacidades. Descrevemos o design da representação e da estrutura do compilador LLVM e avaliamos o design de três maneiras: (a) o tamanho e a eficácia da representação, incluindo as informações de tipo que ela fornece; (b) o desempenho do compilador para vários problemas interprocedurais; e (c) exemplos ilustrativos dos benefícios que o LLVM proporciona para vários problemas desafiadores de compilador.
Lattner et al. (Qui,) estudaram esta questão.
Synapse has enriched 5 closely related papers on similar clinical questions. Consider them for comparative context: