This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug ada/13528] New: make[1]: *** [check-gnat] Error 136
- From: "danglin at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 31 Dec 2003 02:35:39 -0000
- Subject: [Bug ada/13528] New: make[1]: *** [check-gnat] Error 136
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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.
--
Summary: make[1]: *** [check-gnat] Error 136
Product: gcc
Version: 3.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: ada
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: danglin at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: hppa2.0-hp-hpux11.00
GCC host triplet: hppa2.0-hp-hpux11.00
GCC target triplet: hppa2.0-hp-hpux11.00
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13528