This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix hpux10 string to real conversion defficiences


The change could be improved if a check were added to configure to
test the capability of strtod and friends to handle nan, inf and
infinity.  However, it's not clear to me how to do this except by
hard coding the result.
It think one can test it in configure along these lines
a = strtod ("nan", NULL); if(a == a) abort();
a = strtod("+inf", NULL); if(a != a || a != a + 1.0 || a < 0.0) abort();
a = strtod("-inf", NULL); if(a != a || a != a - 1.0 || a > 0.0) abort();

I also am in favour of a configure test. You can look into libgfortran/acinclude.m4 to see how LIBGFOR_CHECK_FOR_BROKEN_ISNAN works, for example.


(The disadvantage of a run test is of cause that it does not work if you build for a target which is different from your system used for building gcc.)

But... you can give target-specific sensible defaults for cross- compilers. In LIBGFOR_CHECK_FOR_BROKEN_ISNAN, for example, the default is:


case "${target}" in
  hppa*-*-hpux*) have_broken_isnan=yes ;;
  *) have_broken_isnan=no ;;
esac


In LIBGFOR_CHECK_CRLF, we have:

case "${target}" in
  *mingw*) have_crlf=yes ;;
  *) have_crlf=no;;
esac


It is painful to maintain for cases where there are many targets passing the test and many targets failing, but when you have one result expected and only a few targets failing, it's quite acceptable.

Besides, I somehow fear that your current version is rather slow for big ascii files. (It is not uncommon to read relatively large ascii files with data in numerics.)

I also agree. Moreover, systems having poor libc (and thus poor strtod) might not have strcasecmp, so I favour a character comparison approach.


FX

--
François-Xavier Coudert
http://www.homepages.ucl.ac.uk/~uccafco/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]