Исходный код -> парсер (фронтенд) -> генератор IR-кода (получили промежуточный байт-код виртуальной машины) -> LLVM-бэкенд (из IR кода генерируем код для целевой платформы (llc) или же можем непосредственно его исполнить (lli) )
это "прослойка" между исходным кодом и машинным для конкретной платформы.
Для чего он нужен? Для генерации более качественного (оптимизированного) кода.