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

--- Comment #49 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> ---
It could be the libc version on these systems. In the read.c we use
convert_real, which calls strtof . This could be returning 0. If you look at
convert_real we are attempting to use the correct available functions. 

  switch (length)
    {
    case 4:
      *((GFC_REAL_4*) dest) =
#if defined(HAVE_STRTOF)
        gfc_strtof (buffer, &endptr);
#else
        (GFC_REAL_4) gfc_strtod (buffer, &endptr);
#endif
      break;

    case 8:
      *((GFC_REAL_8*) dest) = gfc_strtod (buffer, &endptr);
      break;

#if defined(HAVE_GFC_REAL_10) && defined (HAVE_STRTOLD)
    case 10:
      *((GFC_REAL_10*) dest) = gfc_strtold (buffer, &endptr);
      break;
#endif

#if defined(HAVE_GFC_REAL_16)
# if defined(GFC_REAL_16_IS_FLOAT128)
    case 16:
#  if defined(GFC_REAL_16_USE_IEC_60559)
      *((GFC_REAL_16*) dest) = strtof128 (buffer, &endptr);
#  else
      *((GFC_REAL_16*) dest) = __qmath_(strtoflt128) (buffer, &endptr);
#  endif
      break;
# elif defined(HAVE_STRTOLD)
    case 16:
      *((GFC_REAL_16*) dest) = gfc_strtold (buffer, &endptr);
      break;
# endif
#endif

#if defined(HAVE_GFC_REAL_17)
    case 17:
# if defined(POWER_IEEE128)
      *((GFC_REAL_17*) dest) = __strtoieee128 (buffer, &endptr);
# elif defined(GFC_REAL_17_USE_IEC_60559)
      *((GFC_REAL_17*) dest) = strtof128 (buffer, &endptr);
# else
      *((GFC_REAL_17*) dest) = __qmath_(strtoflt128) (buffer, &endptr);
# endif
      break;
#endif

Reply via email to