Здравствуйте! Немного погуглив, я пришел к выводу, что Clang - это кодогенератор, которому на вход подается cpp-файл, а на выходе имеем какой-то промежуточный код. А вот LLVM уже может этот код исполнить или скомпилировать.
Но меня терзают смутные сомнения! Помогите, пожалуйста, разобраться!
Да, вы правы. Clang — фронтэнд генерирующий промежуточное представление. LLVM берёт промежуточное представление (уже вне зависимости от языка на котором писался код оригинально), оптимизирует и генерирует бинарный файл.
GCC использует схожую систему (до clang LLVM вообще принимала IF от GCC). Это позволяет иметь один бэкэнд для множества языков. Разрабатывать заного фактически приходится только парсер.