https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94694
--- Comment #24 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The dec_math.f90 FAILs are at all opt levels: ( ) qsind( 60.000000000000000000000000000000) 0.866025403784438646763723170753 0.866025403784438596588302061718 Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG STOP 1 If I preprocess trigd.c before/after the #c21 patch, the difference (appart from lines/whitespace) are: - (x = fmaf(((x)), (1.74560547e-02f), ((x) * -2.76216747e-06f))); + (x = fmaf((x), 1.74560547e-02, (x) * -2.76216747e-06)); - (x = 8.66025388e-01f); + (x = 8.66025388e-01); - (x = fmaf(((x)), (1.74560547e-02f), ((x) * -2.76216747e-06f))); + (x = fmaf((x), 1.74560547e-02, (x) * -2.76216747e-06)); - (x = 8.66025388e-01f); + (x = 8.66025388e-01); ... - static const volatile GFC_REAL_10 tiny = 0x1.p-16400L; + static const volatile GFC_REAL_10 tiny = 0x1.p-16400l; ... - (x = 8.66025403784438646787e-01L); + (x = 8.66025403784438646787e-01); ... - (x = fmal(((x)), (1.74532925229868851602e-02L), ((x) * -3.04358939097084072823e-12L))); + (x = fmal((x), 1.74532925229868851602e-02, (x) * -3.04358939097084072823e-12)); ... - (x = 8.66025403784438646763723170752936183e-01q); + (x = 8.66025403784438646763723170752936183e-01); etc., so all that matters is that some float suffixes (f, , L, q) are gone from the constants (and the L -> l change on tiny and a few others), which of course matters a lot.