使用gcc时,是否可以在不指定-O级别的情况下启用单个优化标志?
gcc -ffasst-math foo.c
或
gcc -O1 -ffast-math foo.c
哪一个有效?谢谢
是的,您可以启用单独的优化标志。
来自gcc手册页的信息:
-O
-O打开以下优化标志:
-fauto-inc-dec-fcprop-registers-fdce-fdefer-pp-fdelayed-branch-fdse-fguess-branch-propossibility-fif-confersion2-fif-consersion-finine-small-functions-fipa-pure-const-fipa-reference-fmerge-instants-fsplit-wide-types-ftree-biltin-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帧指针。
-ffast数学
设置-fno math errno、-funsafe math优化、-finite math only、-fno舍入math、-fno信号nans和-fcx限制范围。此选项会定义预处理器宏"FAST_MATH"。
任何-O选项都不会打开此选项,因为它可能会导致程序输出不正确,而这些程序依赖于数学函数的IEEE或ISO规则/规范的精确实现。然而,对于不需要这些规范保证的程序,它可能会产生更快的代码。