Oracle Solaris Studio 12.2:C++ 用户指南

A.2.26.1 值

如果存在 n,它必须是 0、1 或 2。

表 A–12 -fsimple

值 

含义  

0

不允许简化假定。保持严格的 IEEE 754 一致性。 

1

允许保守简化。产生的代码与 IEEE 754 不完全一致,但多数程序所产生的数值结果没有更改。 

-fsimple=1 的情况下,优化器可假定:

  • 在进程初始化之后,IEEE 754 缺省舍入/捕获模式不发生改变。

  • 除产生潜在浮点异常的计算不能删除外,产生不可视结果的计算都可以删除。

  • 使用无穷大或 NaNs 作为操作数的计算需要将 NaNs 传送到它们的结果中,即 x*0 可以用零替换。

  • 计算不依赖于零的符号。

    -fsimple=1 的情况下,不允许优化器不考虑舍入或异常进行完全优化。具体来讲,运行时将舍入模式保存为常量时,不能用产生不同结果的计算来替换浮点计算。

2

包括 -fsimple=1 的所有功能,还允许可能导致许多程序生成不同的数值结果(由于舍入的更改)的主动浮点优化。例如,允许优化器将指定循环中的所有 x/y 运算替换为 x*z,其中,要保证在循环 z=1/y 中至少对 x/y 求一次值,并且在执行该循环期间已知 yz 的值为常量值。

缺省值

如果未指定 –fsimple,编译器将使用 -fsimple=0

如果指定了 -fsimple 但未指定 n 值,编译器将使用 -fsimple=1

交互

-fast 隐含了 – fsimple=2

警告

该选项可以破坏 IEEE 754 的一致性。

另请参见

-fast

Rajat Garg 和 Ilya Sharapov 合著的《Techniques for Optimizing Applications: High Performance Computing》,该书详细介绍了优化对精度的影响。