使用gcc时,是否可以启用单个优化标志而不指定-O级别?
gcc -ffasst-math foo.c
OR
gcc -O1 -ffast-math foo.c
哪一个有效? 谢谢!
答案 0 :(得分:0)
是的,您可以启用单个优化标记。
来自gcc手册页的信息:
-O打开以下优化标志:
-fauto-inc-dec -fcprop-registers -fdce -fdefer-pop -fdelayed-branch -fdse -fguess-branch-probability -fif-conversion2 -fif-conversion -finline-small-functions -fipa-pure- const -fipa-reference -fmerge-constants -fsplit-wide-types -ftree-builtin-call-dce -ftree-ccp -ftree-ch -ftree-copyrename -ftree-dce -ftree-dominator-opts -ftree-dse - ftree-fre -ftree-sra -ftree-ter -funit-at-a time
-O也会在机器上打开-fomit-frame-pointer,这样做不会干扰调试。
设置-fno-math-errno,-funsafe-math-optimizations,-ffinite-math-only,-fno-rounding-math,-fno-signaling-nans和-fcx-limited-range。 此选项会导致预处理器宏“ FAST_MATH ”被定义。
任何-O选项都不会打开此选项,因为它可能导致程序的输出不正确,这取决于数学函数的IEEE或ISO规则/规范的精确实现。但是,对于不需要保证这些规范的程序,它可能会产生更快的代码。