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