1 /* Tail call optimizations would reverse the order of additions in func().  */
2 
func(const double * array)3 double func (const double *array)
4 {
5   double d = *array;
6   if (d == 0.0)
7     return d;
8   else
9     return d + func (array + 1);
10 }
11 
main()12 int main ()
13 {
14   double values[] = { 0.1e-100, 1.0, -1.0, 0.0 };
15   if (func (values) != 0.1e-100)
16     abort ();
17   exit (0);
18 }
19