trq@moose.cita.utoronto.ca (Tom Quinn) (10/18/88)
The following code will cause gcc to get a fatal error if compiled
with "-O -mfpa" options. This gcc version 1.30 on a Sun3/160 running
SunOS 4.0.
Tom Quinn Canadian Institute for Theoretical Astrophysics
trq@moose.cita.utoronto.ca
UUCP - decvax!utgpu!moose!trq
BITNET - quinn@utorphys.bitnet
ARPA - trq%moose.cita.toronto.edu@relay.cs.net
The compile:
gcc -g -v -O -mfpa -sun3 -c nsat2.c
gcc version 1.30
/usr/local/lib/gcc-cpp -v -undef -D__GNU__ -D__GNUC__ -Dmc68000 -Dsun -Dunix -D__OPTIMIZE__ -D__HAVE_FPA__ -D__HAVE_68881__ -Dmc68020 nsat2.c /tmp/cca06058.cpp
GNU CPP version 1.30
/usr/local/lib/gcc-cc1 /tmp/cca06058.cpp -quiet -dumpbase nsat2.c -mfpa -g -O -version -o /tmp/cca06058.s
GNU C version 1.30 (68k, MIT syntax) compiled by GNU C version 1.30.
gcc: Program cc1 got fatal signal 6.
The code:
------------------------------------------------------------------------
extern double drem();
struct sat {
double a;
double e;
double pomega;
double mu;
double omega;
double phi;
double p0;
double yr, yi;
int n;
int index;
int current;
};
static double dt;
struct sat *nextpl(pl, nplanet, test)
struct sat *pl;
int nplanet;
struct sat test;
{
struct sat *sptr, *encptr;
double dtmin, dttry;
double dphi;
dtmin = 1.0 / 1.0e-12 ;
encptr = 0 ;
for(sptr = pl; sptr < pl + nplanet; sptr++) {
if(sptr->current == 0) {
if(test.a > sptr->a) {
dphi = test.phi - sptr->phi;
} else {
dphi = sptr->phi - test.phi;
}
dphi = drem(dphi, (2.0*3.14159265358979323846 ) );
if(dphi < 0.0) dphi = (2.0*3.14159265358979323846 ) + dphi;
if((dttry = dphi/({ double __value, __arg = (sptr->omega - test.omega); asm ("fpabsd %1, %0": "=xy" (__value): "xym" (__arg)); __value; }) ) < dtmin) {
dtmin = dttry;
encptr = sptr;
}
}
}
for(sptr = pl; sptr < pl + nplanet; sptr++) {
dphi = (2.0*3.14159265358979323846 ) ;
if((dttry = dphi/({ double __value, __arg = (sptr->omega - test.omega); asm ("fpabsd %1, %0": "=xy" (__value): "xym" (__arg)); __value; }) ) < dtmin) {
dtmin = dttry;
encptr = sptr;
}
}
dt = dtmin;
return (encptr);
}vern@sequoia.ee.lbl.gov (Vern Paxson) (10/22/88)
In article <8810181407.AA06061@moose.cita.utoronto.ca> trq@moose.cita.utoronto.ca (Tom Quinn) writes: >The following code will cause gcc to get a fatal error if compiled >with "-O -mfpa" options. This gcc version 1.30 on a Sun3/160 running >SunOS 4.0. ... >gcc -g -v -O -mfpa -sun3 -c nsat2.c ... >gcc: Program cc1 got fatal signal 6. > >The code: ... I've found the bug can be reduced to the following input: a() { double b; b == 0.0; } This is gcc version 1.29 on a Sun 3/60 running SunOS 3.5. Vern Vern Paxson vern@lbl-csam.arpa Real Time Systems ucbvax!lbl-csam.arpa!vern Lawrence Berkeley Laboratory (415) 486-6411