https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86396
--- Comment #2 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- You can't fold atof ("3.14") with -frounding-math because the result depends on the rounding mode, or with -ftrapping-math (which is the default) because it should raise "inexact" (there are also overflow / underflow cases that should set errno). There are also locale-specific aspects to these functions, such as the variation of the decimal-point character which means you can't fold atof ("3.14") even with -fno-rounding-math -fno-trapping-math as the locale might use "," not "." as decimal-point character, and the variation of uppercase / lowercase 'I' / 'i' mappings (see glibc bug 15744). (And implementation-specific variations in the handling of the n-char-sequence with NAN, quite likely; glibc has the peculiarity there of using strtoull and thus not being able to represent all values in a binary128 payload.)