-funsafe-math-optimizations中包含哪些优化?

时间:2015-01-25 06:58:51

标签: c gcc optimization floating-point

GCC的man page表明-funsafe-math-optimizations允许优化“(a)假设参数和结果有效,(b)可能违反IEEE或ANSI标准”,但这不是很精确,它?

在这种情况下,“无效”的论点是什么? NaN的? Infinites?次归? sqrt()的负数?

结果允许偏离IEEE或ANSI标准多远?它是“仅仅”像operation associativity and ordering这样的东西,还是可能包括例如。与NaN的真实比较或与无限的不正确比较?存储的变量是否可以在使用后重新舍入(对于变量 xy(x == y) + (x == y)可以评估为1)? isinf() / isnan()可以停止工作吗?

GCC开发人员是否遵循任何特定的系统或纪律来解决这些问题,或者答案在不同版本之间的差异很大?

1 个答案:

答案 0 :(得分:3)

根据gcc.gnu.org(我的粗体):

  

此模式允许进行优化,允许任意重新关联转换而无需准确性保证。它也不会尝试保留零的符号

这包括您提及的associative reordering,以及"内置函数[其]具有名称,例如__builtin_sqrt" 时应用"可能精度较低或仅限于较小的域"

相关问题