LLVM 能否用于生成优化的 C 代码

Can LLVM be used to produce optimized C-code

是否可以使用LLVM读取C代码并使其更快?我看过很多关于使用 LLVM 将 C++ 转换为(不可读的)C 代码的讨论,但我想知道 LLVM 是否可以读取 C 代码,并生成具有相同功能且速度更快的文件(代码,而不是可执行文件)。

没有

LLVM 有一个 C 后端,因此您可以通过 LLVM IR 将 C 编译为 C 并在途中应用优化传递,但您要问的既不是该后端的设计目标,也不是 LLVM 作为所有的。如果它在任何特定情况下都有效,那么这只是一个快乐的巧合。

LLVM 的目标之一是使用类似于各种当前硬件的后端生成快速代码。然而,C 甚至没有试图模仿现代处理器。相当合理,比最新的硅奇迹还要早 50 年。

LLVM是编译器中端,它只懂LLVM-IR。要优化 C 代码,您需要一个将 C 转换为 LLVM-IR 的前端。 Clang 就是这样做的。本质上使用 clang 编译 C 代码,启用优化,在前端完成将 C 代码转换为 LLVM-IR 后调用 LLVM。

下面是对编译器工作原理的一个很好的概述:https://cppdepend.com/blog/?p=321