GCC编译器优化选项

时间:2015-04-19 18:08:41

标签: c gcc

我尝试用gcc优化C代码。如果我使用-O1选项将有更好的运行时间,但如果我使用等效的

  -fauto-inc-dec 
  -fcompare-elim 
  -fcprop-registers 
  -fdce 
  -fdefer-pop 
  -fdelayed-branch 
  -fdse 
  -fguess-branch-probability 
  -fif-conversion2 
  -fif-conversion 
  -fipa-pure-const 
  -fipa-profile 
  -fipa-reference 
  -fmerge-constants
  -fsplit-wide-types 
  -ftree-bit-ccp 
  -ftree-builtin-call-dce 
  -ftree-ccp 
  -ftree-ch 
  -ftree-copyrename 
  -ftree-dce 
  -ftree-dominator-opts 
  -ftree-dse 
  -ftree-forwprop 
  -ftree-fre 
  -ftree-phiprop 
  -ftree-slsr 
  -ftree-sra 
  -ftree-pta 
  -ftree-ter 
  -funit-at-a-time

就像我没有使用任何选项标志。 GCC版本是4.8.2。拜托,谁能解释一下为什么?我刚刚发现这些标志的顺序很重要,但我没有找到-O1中的顺序。

1 个答案:

答案 0 :(得分:8)

根据文件,

  

只有在命令行上设置-O级别时,才会启用大多数优化。否则它们被禁用,即使指定了单独的优化标志

https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html(强调我的)


当它继续列出您可以设置的特定标志时,它会注意到:

  

在极少数情况下,当需要对要执行的优化进行“微调”时,可以使用以下标志。

很明显,他们不希望您制作完全自定义的优化选项,而是选择最适合您的方案的一般级别(根据您当前是否正在调试,运送,等等,然后微调你的代码受益于打开或关闭的任何标志。