The acats testsuite dies running cxg2014. The acats.log contains the following: ... splitting /xxx/gnu/gcc-3.3/objdir/gcc/testsuite/ada/acats/tests/cxg/cxg2014.a in to: cxg2014.adb BUILD cxg2014.adb RUN cxg2014 The cxg2014.log file contains: ... * CXG2014 sinh(-1) actual: -7.49999999999999632E-01 expected: -1.17520119364380146E+00 difference: 4.25201193643801825E-01 max err: 1.01932454980493402E-18. /xxx/gnu/gcc-3.3/gcc/gcc/testsuite/ada/acats/run_all.sh: 25902 Floating exceptio n(coredump) Running cxg2014 under gdb: (gdb) r Starting program: /xxx/gnu/gcc-3.3/objdir/gcc/testsuite/ada/acats/tests/cxg/ cxg2014/cxg2014 ,.,. CXG2014 ACATS 2.5 03-12-30 19:36:06 ---- CXG2014 Check the accuracy of the SINH and COSH functions. ... Program received signal SIGFPE, Arithmetic exception. 0x7af5c0b0 in _U_force_trap () from /usr/lib/libc.2 (gdb) bt #0 0x7af5c0b0 in _U_force_trap () from /usr/lib/libc.2 #1 0x7af5e0dc in _U_Qfcnvfxt_quad_to_sgl () from /usr/lib/libc.2 #2 0x000319e4 in cxg2014__a_long_float_check__elementary_functions__exp_strictXn___65 () #3 0x00032b6c in cxg2014__a_long_float_check__elementary_functions__sinhXn___72 () #4 0x0003561c in cxg2014__a_long_float_check__identity_1_test___80 () #5 0x00036a44 in cxg2014__a_long_float_check__do_test___89 () #6 0x00036c08 in _ada_cxg2014 () #7 0x00008b4c in main () Putting a break on the call to _U_Qfcnvfxt_quad_to_sgl, I find that the SIGFPE occurs when the long double being converted is a nan. (gdb) p *(long double *)$r26 $1 = nan(0xf000000000000) The gdb printout seems bogus: (gdb) printf "0x%llx\n", *(long long *)$r26 0x7fff000000000000 (gdb) printf "0x%llx\n", *(long long *)($r26+8) 0x0 So, the passed value is infinity. The conversion being performed is a quad floating to single (32-bit) integer. It's my understanding that we get an unimplemented exception when Inf is converted to an integer format.
Closing, as this is a duplicate of PR 13408 (opened by John as well :-) Arno *** This bug has been marked as a duplicate of 13408 ***