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