什么是GCC昂贵的优化?

时间:2012-09-28 18:47:18

标签: optimization gcc

GCC documentation对此并不特别冗长。它的意思是:

  

-fexpensive的优化:

     Perform a number of minor optimizations that are relatively expensive.

这些是哪种优化?任何一个例子?

1 个答案:

答案 0 :(得分: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中唯一提及cp/(C ++ 支持)位于注释/* Handle ordinary C++ destructors. */的代码段中,似乎影响了a的设置 LOOKUP_NONVIRTUAL标记,以及相关评论/* Optimize for space over speed here. */

  • 处理器特定的配置/目录(sparc,alpha,sh,i386)中有一些点击。当没有针对大小进行优化时,唯一适用于TARGET_AVX的i386适用/* When not optimize for size, enable vzeroupper optimization for TARGET_AVX with -fexpensive-optimizations and split 32-byte AVX unaligned load/store. */

只要看一下其他一些点击就可以说服我,我应该满足于在gcc文档的层面上留下我对这个功能的了解。