https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87204

            Bug ID: 87204
           Summary: strtoflt128 produces different results for subnormals
                    with -m32 and -m64
           Product: gcc
           Version: 7.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libquadmath
          Assignee: unassigned at gcc dot gnu.org
          Reporter: barannikov88 at gmail dot com
  Target Milestone: ---

The testcase:

#include <quadmath.h>
#include <stdio.h>
#include <inttypes.h>

int main ()
{
  union {
    __float128 f;
    uint64_t i64[2];
  } u = { .f = strtoflt128("1e-4941", NULL) };
  printf("%016" PRIx64 " %016" PRIx64 "\n", u.i64[1], u.i64[0]);
}

$ gcc-7.3.0 t.c -lquadmath -lm -m32 && a.out
0000000000014707 e947d757fbf6f700

$ gcc-7.3.0 t.c -lquadmath -lm -m64 && a.out
0000000000014707 e946d257f2f674b9

The output is for x86-64, haven't tested for other platforms.

Reply via email to