------- Comment #32 from amylaar at spamcop dot net 2007-05-14 16:39 ------- Subject: Re: [4.3 Regression] FAIL: 27_io/basic_istream/extractors_arithmetic/char/12.cc execution test
Quoting pcarlini at suse dot de <[EMAIL PROTECTED]>: > > safely when the target doesn't have infinities. Therefore, I would ask you to > untangle a bit this thing... Apparently, for some reason, for your target > onte > of the checks (which one? !finitef? !finite?) is not working, instead the > final > f != __builtin_huge_valf() catches it. These are excepts from arc-elf32/arc700/libstdc++-v3/include/arc-elf32/bits/c++config.h: /* Define to 1 if you have the `finitef' function. */ /* #undef _GLIBCXX_HAVE_FINITEF */ /* Define to 1 if you have the `_finitef' function. */ /* #undef _GLIBCXX_HAVE__FINITEF */ /* Define to 1 if you have the `finite' function. */ /* #undef _GLIBCXX_HAVE_FINITE */ /* Define to 1 if you have the `_finite' function. */ /* #undef _GLIBCXX_HAVE__FINITE */ /* Define to 1 if you have the `isinf' function. */ /* #undef _GLIBCXX_HAVE_ISINF */ /* Define to 1 if you have the `_isinf' function. */ /* #undef _GLIBCXX_HAVE__ISINF */ Thus, the test that should be performed in _ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKPi should be: if (fabs(__d) > numeric_limits<float>::max()) errno = ERANGE; Disassembly of that method shows that the test has been optimized away. This is not actually surprising, because _GLIBCXX_HAVE_STRTOF has been set, and hence strtof has been used, and __d remained uninitalized. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31836