-ffinite-math-only 促进了哪些优化?

问题描述 投票:0回答:1

我可以在文档和网络中找到的有关 -ffinite-math-only 的所有信息是“允许对假设参数和结果不是 NaN 或 +-Infs 的浮点算术进行优化。”这对我来说似乎不太现实。有谁确切知道什么这些优化是什么?

gcc optimization floating-point
1个回答
10
投票

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

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

您经常看到这个假设与“零的符号无关紧要”之类的假设一起出现,这样就可以实现以下内容:

  • x - x
    -->
    0
  • 0 / x
    -->
    0
  • x * 0
    -->
    0
© www.soinside.com 2019 - 2024. All rights reserved.