This is the mail archive of the gcc-bugs@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]

[Bug ada/13528] New: make[1]: *** [check-gnat] Error 136


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


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