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)42foo (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