如何在 gcc 中启用单个优化标志?

Posted

技术标签:

【中文标题】如何在 gcc 中启用单个优化标志?【英文标题】:How to enable single optimisation flags in gcc? 【发布时间】:2012-03-30 12:38:42 【问题描述】:

使用 gcc 时,是否可以在不指定 -O 级别的情况下启用单个优化标志?

gcc -ffasst-math foo.c

gcc -O1 -ffast-math foo.c

哪一个有效? 谢谢!

【问题讨论】:

【参考方案1】:

是的,您可以启用单独的优化标志。

来自 gcc 手册页的信息:

-O

-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。

-ffast-数学

设置 -fno-math-errno、-funsafe-math-optimizations、-ffinite-math-only、-fno-rounding-math、-fno-signaling-nans 和 -fcx-limited-range。 此选项会导致定义预处理器宏“FAST_MATH”。

任何 -O 选项都不会打开此选项,因为它可能导致程序输出不正确,这些程序依赖于数学函数的 IEEE 或 ISO 规则/规范的精确实现。但是,对于不需要这些规范保证的程序,它可能会产生更快的代码。

【讨论】:

以上是关于如何在 gcc 中启用单个优化标志?的主要内容,如果未能解决你的问题,请参考以下文章

如何查看 gcc 优化选项?

GCC - 仅在特定功能上启用编译器标志

哪个 gcc O2 标志可能导致 fp 计算失败?

嵌入式 GCC 优化魔法

Mac OS X 上的 GCC 标志 -Os 来自哪里?

如何将 GCC LTO 与不同优化的目标文件一起使用?