编译器是否能提供应用优化的日志记录?

10
在使用启用了优化的编译器进行C++应用或库的编译时,例如使用-O3参数的gcc,是否有一种方法可以列出所应用的优化?我的意思是,不需要比较实际的字节码。这将是一个有趣的学习方式。

1
值得注意的是,这些信息很少有用。GCC几乎完全在GIMPLE和RTL中进行优化,它很难返回查看这些语句来自哪一行。特别是如果它使用案例分析,则必须回溯并找到其所指的特定情况...等等。 - Alec Teal
@AlecTeal 很好的观点,谢谢。 - danijar
对我来说不值得投反对票,但是:“这个问题没有展示任何研究努力”的说法是正确的。 - Sebastian Mach
2个回答

8

来自http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html

-fopt-info系列开关会导致优化器将信息转储到stderr(或者您喜欢的文件)。特别是,-fopt-info-missed可以用于查看为什么无法应用优化。

有相当多的不同组合可用。从链接的页面中:

For example,

          gcc -O3 -fopt-info-missed=missed.all

outputs missed optimization report from all the passes into missed.all.

As another example,

  gcc -O3 -fopt-info-inline-optimized-missed=inline.txt

will output information about missed optimizations as well as optimized locations from all the inlining passes into inline.txt.


1
相关页面现在为:https://gcc.gnu.org/onlinedocs/gcc/Developer-Options.html - apnorton

1

1
这些标志并不是唯一的优化措施。实际上,这些标志除了应用之外,还有一些“隐藏”的优化措施也被应用了。 - Ruslan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接