URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [ieee/] [mzero6.c] - Rev 826
Compare with Previous | Blame | View Log
/* Tail call optimizations would convert func() into the moral equivalent of: double acc = 0.0; for (int i = 0; i <= n; i++) acc += d; return acc; which mishandles the case where 'd' is -0. They also initialised 'acc' to a zero int rather than a zero double. */ double func (double d, int n) { if (n == 0) return d; else return d + func (d, n - 1); } int main () { if (__builtin_copysign (1.0, func (0.0 / -5.0, 10)) != -1.0) abort (); exit (0); }