LLVM 有后端优化器吗?

Is there a backend optimizer in LLVM?

我可以通过命令获取优化级别llc -help

-O=<char>               - Optimization level. [-O0, -O1, -O2, or -O3] (default = '-O2')

我想知道优化到底做了什么。

所以,我正在搜索后端优化器的源代码。

我google它通过“llvm后端优化器”,但没有关于它的信息,只有一些与目标无关的传递源代码。

我想知道优化对 div-rem-pars 做了什么。

可以将llvm IR的两条指令合并为一条汇编代码指令。

显然 llvm 中有后端优化器选项。然而,它们没有很好的记录 [1,2]。 TargetMachine [3] class 有函数 getOptLevelsetOptLevel 为特定目标机器设置从 0-3 的优化级别,所以从那里开始你可以尝试跟踪它的使用位置。

[1] https://llvm.org/docs/CodeGenerator.html#ssa-based-machine-code-optimizations
[2] https://llvm.org/docs/CodeGenerator.html#late-machine-code-optimizations
[3] https://llvm.org/doxygen/classllvm_1_1TargetMachine.html