Un compilador es simplemente un programa que traduce otros
programas. Los compiladores clásicos traducen código fuente a código
máquina ejecutable que tu ordenador puede entender. (Algunos compiladores traducen código fuente a otro lenguaje de programación. Estos se denominan traductores fuente-a-fuente o transpiladores). LLVM es un proyecto de compilador de uso generalizado, consistente en muchas herramientas de compilación modulares. El diseño tradicional de compiladores consta de tres partes:
• El Frontend traduce código fuente en una representación
intermedia (IR) de éste. LLVM IR es un lenguaje de bajo nivel parecido a ensamblador. Sin embargo omite cualquier información específica del hardware. clang es el frontend de LLVM para la familia de lenguajes de C. • El Optimizador analiza la IR y la traduce a una forma más eficiente; opt es la herramienta de optimización de LLVM. • ElBackend genera código máquina al mapear la IR al conjunto de instrucciones del hardware de destino; llc es la herramienta LLVM de backend.