Leisner.Henr@XEROX.COM (Marty) (10/18/89)
I think I found a bug in gcc 1.36.
The following error causes a bus error on a sun4 running sunos 4:
double foo(double f)
{
double *pf= &f;
return (double) 1.0 - *pf;
}
main()
{
foo((double) 1.0);
}
Session was:
pssun% gcc -v -o bug -g gcc-bug.c
gcc version 1.36
pssun% bug
Bus error
The problem is doubles are not necessarily stored on 8 byte boundaries.
Doubles on the stack seem to be set to 4 byte boundaries.
After much work the above extract duplicated the problem.
The compiler is generating
lddf [o0],f4
which assumes o0 is on an 8 byte boundary (so my local sparcs experts tell
me).
I'm hoping to see a fix soon.
marty
ARPA: leisner.henr@xerox.com
GV: leisner.henr
NS: leisner:wbst139:xerox
UUCP: hplabs!arisia!leisner