GCC的昂贵优化是什么?

20

GCC文档对此并没有详细说明。它所说的是:

-fexpensive-optimizations:

     Perform a number of minor optimizations that are relatively expensive.
这些是哪种优化?有示例吗?
1个回答

15

我不是编译器专家,无法深入了解这个问题,但也许有人可以在此基础上构建……

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行。如果有人真的关心的话,我将留给其他人发布更详细的分析。

其中一些引起了我的注意。值得一提的是(截至撰写时):

  • cp/(C++支持)中,唯一提到 flag_expensive_optimizations 的地方是在被注释为/*处理普通的C++ 析构函数。*/ 的代码部分,并且似乎会影响设置一个LOOKUP_NONVIRTUAL标志,附带注释为/*在这里优化空间而不是速度。*/

  • 在特定处理器的config/目录下(sparc、alpha、sh、i386),有几个命中。仅在未针对大小进行优化时,i386中的一个应用于TARGET_AVX,并且被注释为/* 当不进行大小优化时,使用 -fexpensive-optimizations 为 TARGET_AVX 启用 vzeroupper 优化以及分割32字节的 AVX 不对齐的加载/存储。 */

浏览其他一些搜索结果使我认识到应该满足于使用gcc文档而不再深入了解这个特性。


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