什么是 LLVM CodeGen 优化?

What is LLVM CodeGen optimization?

LLVM 库中的 ExecutionEngine class 有一个选项可以设置 CodeGen 优化级别 (CodeGenOpt::Level)。我是否正确理解 CodeGen 优化是在机器代码生成期间应用的,并且它们与 IR 无关?如果我想优化 IR,我需要使用其他工具吗?

设置 CodeGenOpt 时在 JIT 中发生的优化是 a) 选择了哪个指令选择器(快速 isel 与选择 dag),以及 b) 在 MC 级别通过期间是否有任何优化 运行。

如果您想在 IR 级别进行优化,您需要创建自己的 PassManager 并将您想要的通道添加到 运行。