Skip to content

Disable floating point exceptions for clang

Carsten Gräser requested to merge feature/disable-fp-exception-with-clang into master

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

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. This hoefully fixes #13 (closed).

Merge request reports