21

使用 IBM 的 XL 编译器系列,可以提供两个选项 (-qreport-qlist) 来为每个源文件生成报告,其中包括关于应用了哪些优化的信息,或者代码的哪些部分无法优化(以及为什么)。

是否有可能为 GNU 的 g++ 获得类似的报告 - 如果是,该怎么做?

4

3 回答 3

15

看看-fdump-tree-[switch]旗帜。您可以使用它-fdump-tree-all来获取大量信息。

此外,在主干 gcc-fopt-info-[options]中,您可以访问更高级别的优化信息,例如,当应用特定优化、错过等时,例如

-fopt-info-inline-optimized-missed

打印所有成功和错过的内联优化(stderr在这种情况下)。这显然是相当新的功能,所以我不确定它的支持程度如何。

在较早的版本中,它们-ftree-vectorizer-verbose=n现在已被弃用,取而代之的是 opt-info。

所有这些选项都列在这里https://gcc.gnu.org/onlinedocs/gcc/Developer-Options.html虽然挑选有用的选项可能有点棘手。

于 2013-02-06T20:23:45.883 回答
7

用于-S -fverbose-asm列出汇编程序输出标头中的每个静默应用选项(包括优化选项)。

于 2013-02-07T06:21:06.253 回答
2

来自https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gcc/Optimize-Options.html#Optimize-Options

您可以调用 GCC-Q --help=optimizers以找出在每个级别启用的确切优化集。

示例:(启用优化选项的计数)不需要文件。

$ g++ -std=c++17 -O2 -Q --help=optimizers 2>&1 |grep enabled |wc -l
135

请注意,-O1/2/3 启用的许多优化没有单独的标志 (另请参见:c++ - g++ O1 is not equal to O0 with all related optimization flags - 代码日志

于 2020-03-09T11:33:53.623 回答