1 /* PR middle-end/89663 */
2 /* { dg-require-effective-target indirect_calls } */
3 /* { dg-require-effective-target non_strict_prototype } */
4 
5 int irint (double);
6 long lrint (double);
7 long long llrint (double);
8 int iround (double);
9 long lround (double);
10 long long llround (double);
11 int iceil (double);
12 long lceil (double);
13 long long llceil (double);
14 int ifloor (double);
15 long lfloor (double);
16 long long llfloor (double);
17 int irintf (float);
18 long lrintf (float);
19 long long llrintf (float);
20 int iroundf (float);
21 long lroundf (float);
22 long long llroundf (float);
23 int iceilf (float);
24 long lceilf (float);
25 long long llceilf (float);
26 int ifloorf (float);
27 long lfloorf (float);
28 long long llfloorf (float);
29 int irintl (long double);
30 long lrintl (long double);
31 long long llrintl (long double);
32 int iroundl (long double);
33 long lroundl (long double);
34 long long llroundl (long double);
35 int iceill (long double);
36 long lceill (long double);
37 long long llceill (long double);
38 int ifloorl (long double);
39 long lfloorl (long double);
40 long long llfloorl (long double);
41 
42 void
foo(long long * p)43 foo (long long *p)
44 {
45   int (*fn) (int);
46   int n = 0;
47 #define T(f) fn = (int (*) (int)) f; p[n++] = fn (1);
48   T (irint)
49   T (lrint)
50   T (llrint)
51   T (iround)
52   T (lround)
53   T (llround)
54   T (iceil)
55   T (lceil)
56   T (llceil)
57   T (ifloor)
58   T (lfloor)
59   T (llfloor)
60   T (irintf)
61   T (lrintf)
62   T (llrintf)
63   T (iroundf)
64   T (lroundf)
65   T (llroundf)
66   T (iceilf)
67   T (lceilf)
68   T (llceilf)
69   T (ifloorf)
70   T (lfloorf)
71   T (llfloorf)
72   T (irintl)
73   T (lrintl)
74   T (llrintl)
75   T (iroundl)
76   T (lroundl)
77   T (llroundl)
78   T (iceill)
79   T (lceill)
80   T (llceill)
81   T (ifloorl)
82   T (lfloorl)
83   T (llfloorl)
84 }
85