Llvm 在叮当声中为-O4做了哪些优化过程?

Llvm 在叮当声中为-O4做了哪些优化过程?,llvm,clang,llvm-clang,Llvm,Clang,Llvm Clang,我们正在尝试实现一个jit编译器,其性能应该与使用clang-o4时的性能相同。有没有一个地方可以让我很容易地获得由指定了-o4的clang调用的优化过程列表?据我所知-o4与启用-O3+的LTO(链接时间优化)的意思相同。 请参阅以下代码片段: //手动将-O转换为-O2,-O4转换为-O3 //检查-O4。 另见: 您可以使用-emit llvm或-flto或与-O3-flto同义的-O4标志从clang生成位代码文件 有关与-O3标志一起使用的优化,请参阅此文件(查找OptLevel变

我们正在尝试实现一个jit编译器,其性能应该与使用clang-o4时的性能相同。有没有一个地方可以让我很容易地获得由指定了-o4的clang调用的优化过程列表?

据我所知-o4与启用-O3+的LTO(链接时间优化)的意思相同。 请参阅以下代码片段:

  • //手动将-O转换为-O2,-O4转换为-O3
  • //检查-O4。
另见:

您可以使用-emit llvm或-flto或与-O3-flto同义的-O4标志从clang生成位代码文件


有关与-O3标志一起使用的优化,请参阅此文件(查找OptLevel变量-它的值为3)。

请注意,从LLVM版本5.1开始-O4不再意味着链接时间优化。如果你想要,你需要传递-flto。请参阅。

在谈论LLVM时,请使用LLVM版本,而不是Apple LLVM版本-LLVM当前为3.5,因此5.1不存在。注意:这不再正确。手册现在明确规定“-O4及以上:目前相当于-O3”。使用O4并认为自己在做LTO的人则不是。