http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56379

             Bug #: 56379
           Summary: libquadmath: Wrong result for strtoflt128.c if
                    compiled with -O0
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: libquadmath
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: bur...@gcc.gnu.org
                CC: ja...@gcc.gnu.org


As reported by Tilo Schwarz at
http://gcc.gnu.org/ml/fortran/2013-02/msg00091.html

When libquadmath's strtod/strtoflt128.c is compiled with -O1 or -O2, it gives
the correct result. However, for -O0 it doesn't. Hence, gfortran.dg/quad_2.f90
fails.

Mathematically,
sqrt(2.0) ==
1.414213562373095048801688724209698078569671875376948073176679737990…

The string str3 is (== fp2 and == fp4 with -O1/-O2):
    str3 is "1.41421356237309504880168872420969798"

If libquadmath/strtod/strtoflt128.c is compiled with -O0, reading the string to
fp4 and printing its value yields:
   fp4:     "1.41421356237309504885589883283397321"
   fp2-fp4: -0.00000000000000000005421010862427522


Might (or might not) be related to PR48111 (strtoflt128 on MinGW).

Reply via email to