17

GCC 文档对此并不特别详细。它说的是:

-昂贵的优化:

     Perform a number of minor optimizations that are relatively expensive.

这些是哪种优化?有什么例子吗?

4

1 回答 1

12

我没有足够的编译器 gee^H^H^H 专家来做这个,但也许有人可以在它的基础上构建......

gcc 的相关位可以通过以下方式轻松获得(如果您不尝试检查整个内容):

svn co --depth=immediates svn://gcc.gnu.org/svn/gcc/trunk/gcc gcc
cd gcc
svn --set-depth infinity update config c cp

(至少那是我在其中找到的似乎与 C/C++ 相关的子集;如果您对 gcc 支持的其他语言感兴趣,请添加其他目录)

接着

grep -R flag_expensive_optimizations . | grep -v .svn

在少量文件上产生一个屏幕的价值(35 行)点击。我会把它留给其他人发布更详细的分析(如果有人真的足够关心的话)。

其中有几个引起了我的注意。我会提到(在撰写本文时):

  • flag_expensive_optimizations在(C++ 支持)中唯一提到的cp/是一段代码注释/* Handle ordinary C++ destructors. */,似乎影响 LOOKUP_NONVIRTUAL标志的设置,以及相关的注释/* Optimize for space over speed here. */

  • 在特定于处理器的 config/ 目录 (sparc, alpha, sh, i386) 中有一些命中。唯一的 i386TARGET_AVX在不优化尺寸时适用并被评论/* When not optimize for size, enable vzeroupper optimization for TARGET_AVX with -fexpensive-optimizations and split 32-byte AVX unaligned load/store. */

看了一些其他的文章就说服了我,我应该满足于将我对这个特性的了解留在 gcc 文档的级别。

于 2012-09-29T15:02:10.727 回答