eirik@ELF.TN.CORNELL.EDU (01/05/90)
This message concerns gcc 1.36.91
The following patch to gnulib.c
*** gnulib.c Thu Dec 21 16:04:12 1989
--- _fixunsdfsi.c Thu Jan 4 17:57:12 1990
***************
*** 199,205 ****
--- 199,209 ----
By adding at first, rather that subtracting,
we ensure the numbers are always positive when converted to fixed point,
so they are always rounded down. */
+ #ifdef sparc
+ return (unsigned SItype) a;
+ #else
return ((SItype) (a + HIGH_BIT_COEFF)) - HIGH_BIT_INT_COEFF;
+ #endif
}
#endif
changes the output of the following program on a sun4/260
main()
{
double d=1.25;
printf("%f %d\n",d,__fixunsdfsi(d));
exit(0);
}
Without this patch, Sun cc and gcc generate similar code for
__fixunsdfsi, so it seems more like a pecularity of sparc floating
point than a compiler bug. With the patch, gcc generates a recursive
call and cc generates a call to a library routine.