什么是-ffinite-math-only促进的优化?

时间:2012-04-13 17:22:32

标签: optimization gcc compiler-construction floating-point

我可以在文档中找到的所有信息和仅用于-ffinite-math的web是“允许优化浮点运算,假设参数和结果不是NaN或+ -Infs”。这对我来说似乎没有。有没有人确切地知道那些那些优化是什么? 感谢

1 个答案:

答案 0 :(得分:8)

在这个假设下可以优化很多小东西,例如:

  • x == x - > 1
  • x * 1 - > x
  • x >= y - &gt; !(x < y)和类似的。
  • x/x - &gt; 1如果编译器可以证明x != 0
  • 它可能允许编译器对x > y ? x : y等表达式使用硬件最大/最小指令。
  • ......更多

你经常会看到这个假设以及“零符号无关紧要”之类的假设,然后允许这样的事情:

  • x - x - &gt; 0
  • 0 / x - &gt; 0
  • x * 0 - &gt; 0
相关问题