GCC 优化选项
Posted
技术标签:
【中文标题】GCC 优化选项【英文标题】:GCC Optimization Option 【发布时间】:2013-08-06 03:09:07 【问题描述】:最近用GCC编译一个程序,但是当我使用-O1
优化选项时,出错了;使用-O0
时没有问题。所以我用官方文档说的那些选项替换了-O1
,例如-fauto-inc-dec
、-fcompare-elim
、-fcprop-registers
等。
但是,它运行良好,没有任何错误,但性能不是很好。
我想知道-O1
是否相当于那些小编译选项?
【问题讨论】:
听起来你的程序实际上有一个错误,可能是由未定义的行为引起的,它意外地与 -O0 一起工作。你应该修复这个错误。 谢谢您,先生。这是很有可能的。但是,我对 -O1 和 -O1 打开的那些优化标志的区别感兴趣。为什么它们有不同的效果? 【参考方案1】:完全开启优化(-O1
vs -O0
)会以-f
标志无法控制的方式更改代码生成。注意gcc documentation中的这句话:
并非所有优化都直接由标志控制。此部分仅列出具有标志的优化。
一些细节取决于非常具体的 gcc 版本号(例如 gcc 4.2 与 gcc 4.5、4.9 等)。
【讨论】:
【参考方案2】:The -O1
will turn on the following optimization flags:
-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
【讨论】:
我已经用它们来代替-O1,但是效果不一样。添加顺序也很重要吗? 是的,传球顺序通常很重要。 谢谢,我想知道在哪里可以得到序列? GCC 手册按字母顺序对其进行了排序。 @user2655195 我不知道打印通行证顺序的标志,但我想可以从通行证管理器代码中挖掘出来。看看gcc.gnu.org/onlinedocs/gccint/Pass-manager.html 好的,谢谢您的建议。以上是关于GCC 优化选项的主要内容,如果未能解决你的问题,请参考以下文章