Skip to content
  • Carsten Gräser's avatar
    Disable floating point exceptions for clang · 0bb9ba40
    Carsten Gräser authored
    When compiling with `-O3` clang versions >= 5.0 may
    generate code containing auxiliary operations dividing
    by zero altough the result is not used. Specifically code like this
    
    ```cpp
    for (int i=0; i<=3; i++)
      for (int j=0; j<=3; j++)
        for (int k=0; k<=3; k++)
          if ((m!=i) && (m!=j) && (m!=k))
            z += x*(1.0/(m-k))*(1.0/(m-j))*(1.0/(m-i));
    ```
    
    should never devide by zero. While the result of the code
    is correct with clang, it seems to produce additional
    operations for the ruled out cases where we would devide by zero.
    For more details see the clang bug: https://bugs.llvm.org/show_bug.cgi?id=40280
    
    The only possible solution on our side is to turn of FP exceptions
    for clang.
    0bb9ba40