Aula 20: Introdução ao LLVM IR

Data de Publicação

25/03/2026

Data de Modificação

08/03/2026

Objetivos

  • Conhecer a infraestrutura LLVM.
  • Ler e escrever LLVM IR básico.

Motivação

LLVM se tornou a plataforma de referência para pesquisa e desenvolvimento de compiladores na indústria:

  • É a base de compiladores para C/C++ (Clang), Rust, Swift, Julia e muitos outros.
  • Permite que engenheiros foquem em aspectos de linguagem e análises sem reimplementar back-ends para cada arquitetura.
  • Serve como laboratório para técnicas avançadas de otimização e geração de código.

Conteúdo

O LLVM (Low Level Virtual Machine) é um conjunto de bibliotecas e ferramentas para construção de compiladores. Sua LLVM IR é uma linguagem intermediária em SSA, tipada e portável, usada por Clang, Rust, Swift e muitos outros.

flowchart LR
  Fonte[Fonte C/Rust] --> Front[Clang/rustc]
  Front --> IR[LLVM IR]
  IR --> Opt[opt passes]
  Opt --> IR2[IR otimizada]
  IR2 --> llc[llc]
  llc --> Asm[Assembly .s]

Anatomia da LLVM IR

É um Assembly portável, tipado e SSA. - Tipos: i32 (inteiro 32 bits), float, ptr (ponteiro), <4 x float> (vetor SIMD). - Registradores Virtuais: Infinitos, começam com %. %1, %a. - Sintaxe:

define i32 @fatorial(i32 %n) {
entry:
  %cmp = icmp eq i32 %n, 0
  br i1 %cmp, label %base, label %recurse

base:
  ret i32 1

recurse:
  %sub = sub i32 %n, 1
  %call = call i32 @fatorial(i32 %sub)
  %res = mul i32 %n, %call
  ret i32 %res
}

O Pipeline LLVM

  1. Frontend (Clang, Rustc): Fonte \(\to\) LLVM IR.
  2. Optimizer (opt): LLVM IR \(\to\) LLVM IR (melhorada). Passadas como -mem2reg, -instcombine.
  3. Backend (llc): LLVM IR \(\to\) Assembly Nativo (.s) ou Objeto (.o).

Resumo

  • LLVM IR: SSA, tipada, registradores virtuais (%), funções e blocos nomeados. Permite otimizações e geração de código para várias arquiteturas.
  • Pipeline: Frontend → IR → opt (passes) → llc → assembly/objeto.

Referências

  • Aho et al. (2006); Cooper & Torczon (2011). Documentação oficial: llvm.org.

Materiais da aula

Última atualização: 08/03/2026

De volta ao topo