1 /* { dg-do compile } */
2 
3 /* This formerly ICEd when trying to expand pow as a built-in with
4    the wrong number of arguments.  */
5 
6 extern double pow (double, double) __attribute__ ((__nothrow__ , __leaf__));
7 
8 typedef struct {
9   long long data;
10   int tag;
11 } Object;
12 
13 extern Object Make_Flonum (double);
14 extern Object P_Pow (Object, Object);
15 
General_Function(Object x,Object y,double (* fun)())16 Object General_Function (Object x, Object y, double (*fun)()) {
17   double d, ret;
18 
19   d = 1.0;
20 
21   if (y.tag >> 1)
22     ret = (*fun) (d);
23   else
24     ret = (*fun) (d, 0.0);
25 
26   return Make_Flonum (ret);
27 }
28 
P_Pow(Object x,Object y)29 Object P_Pow (Object x, Object y) { return General_Function (x, y, pow); }
30