sverre@lev.Seri.GOV (Sverre Froyen) (03/18/91)
I am puzzled. Trying to track down the cause of colons `:'
in some of the floating point numers output from the compiler
I made the following change to frexp.c (I am using estdio and
the libfp.a I posted):
*** 1.1 1991/03/12 20:05:28
--- frexp.c 1991/03/15 20:49:16
***************
*** 16,23 ****
sign = value.s[S_MS] & SIGN_MASK;
value.s[S_MS] &= ~SIGN_MASK;
! /* Check for zero */
! if (value.l[L_MS] == 0 && value.l[L_LS] == 0) {
*exp = 0;
value.s[S_MS] = sign;
}
--- 16,25 ----
sign = value.s[S_MS] & SIGN_MASK;
value.s[S_MS] &= ~SIGN_MASK;
! /* Check for zero exponent (no denormalized numbers) */
! if ((value.s[S_MS] & EXP_MASK) == 0) {
! value.l[S_MS] = 0L;
! value.l[L_LS] = 0L;
*exp = 0;
value.s[S_MS] = sign;
}
That is, instead of checking just for zeros, I decided to check
for zeros and denormalized numbers. This caused the following error
message when compiling libm.a (no colons this time):
cc -O -DNATIONAL -c erf.c
cc: Program cc1 got fatal signal 10.
make: Error code 256
I then decided to print-out value.l[L_MS] and value.l[L_LS] in
frexp inside the if statement (just before they are zeroed).
This resulted in several 0x0 0x0 pairs when compiling erf.c which
now compiled without errors.
I then thought this might be a compiler bootstrap problem so
I removed the print statement and relinked the compiler.
The signal 10 error message reappeared.
Ideas anyone?
Sverre
--
Sverre Froyen
sverre@seri.gov, sunpeaks!seri!sverre