[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: gcc isinf(1.0/0.0) fails on m68k



On Sun, 11 Feb 2018, Jean-Michel Vourg?re wrote:

> Hi
> 
> Last build of rrdtool failed on m68k, because gcc IEEE stack pre-check fails 
> [1].
> 
> The autoconf runs this:
> 
> #include <stdio.h>
> int main(void){
>    double rrdnan,rrdinf,rrdc,rrdzero;
>    ;
>    /* some math to see if we get a floating point exception */
>    rrdzero=sin(0.0); /* don't let the compiler optimize us away */
>    rrdnan=0.0/rrdzero; /* especially here */
>    rrdinf=1.0/rrdzero; /* and here. I want to know if it can do the magic */
> 	  /* at run time without sig fpe */
>    rrdc = rrdinf + rrdnan;
>    rrdc = rrdinf / rrdnan;
>    if (! isnan(rrdnan)) {printf ("not isnan(NaN) ... "); return 1;}
>    if (rrdnan == rrdnan) {printf ("nan == nan ... "); return 1;}
>    if (! isinf(rrdinf)) {printf ("not isinf(oo) ... "); return 1;}
>    if (! isinf(-rrdinf)) {printf ("not isinf(-oo) ... "); return 1;}
>    if (! rrdinf > 0) {printf ("not inf > 0 ... "); return 1;}
>    if (! -rrdinf < 0) {printf ("not -inf < 0 ... "); return 1;}
>    return 0;
> }
> 
> This returned 0 in previous builds [2], but now we get
> "not isinf(oo)"
> 
> I can't find anything changed upstream in these tests compared to last 
> successfull build.
> 
> Any ideas/thoughts?
> 

This seems to be a regression in Debian's C compiler. I came across a 
similar failure recently, which we found using the 'paranoia' floating 
point test suite from netlib.org.

The C version of 'paranoia' when run on a machine with physical 68882 
works fine when built with an old compiler. And the Fortran version 
(dpara.f) built with a recent f77 compiler also works fine on physical 
68882.

But recent Debian C compilers for m68k don't give the expected results.

BTW, it could be that running test suites on 680x0 emulators is 
contributing to the problem. For example, dpara.f under Qemu prints some 
weird output:

 Searching for overflow threshold:
 Can " z = -y " overflow?  trying it on  y =  -i.f^@^@^@^D^@^@^@E+00
 Seems O.K.
 Overflow threshold is  v =   1.79769313+308
 Overflow saturates at  sat =   i.f^@769313+308

I haven't tried this under Aranym.

[Jean-Michel, Stan, please note that there is a bug tracker entry for this 
issue now, #890466, Cc'd].

> 
> 
> [1] Last failed build:
> https://buildd.debian.org/status/fetch.php?
> pkg=rrdtool&arch=m68k&ver=1.7.0-1&stamp=1518247574&raw=0
> 
> [2] Previous build, sucessfull:
> https://buildd.debian.org/status/fetch.php?
> pkg=rrdtool&arch=m68k&ver=1.6.0-1%2Bb3&stamp=1500859583&raw=0

-- 


Reply to: