https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87303
--- Comment #2 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- I don't see a bug here. Excess precision semantics mean that the comparison is effectively with 0.1e-100L (whereas the array initializer is (double) 0.1e-100L). If you use "!= (double) 0.1e-100" in the test - add a cast of the constant to double - then it should pass with -fexcess-precision=standard.