/* PR middle-end/89663 */ /* { dg-require-effective-target indirect_calls } */ /* { dg-require-effective-target non_strict_prototype } */ int irint (double); long lrint (double); long long llrint (double); int iround (double); long lround (double); long long llround (double); int iceil (double); long lceil (double); long long llceil (double); int ifloor (double); long lfloor (double); long long llfloor (double); int irintf (float); long lrintf (float); long long llrintf (float); int iroundf (float); long lroundf (float); long long llroundf (float); int iceilf (float); long lceilf (float); long long llceilf (float); int ifloorf (float); long lfloorf (float); long long llfloorf (float); int irintl (long double); long lrintl (long double); long long llrintl (long double); int iroundl (long double); long lroundl (long double); long long llroundl (long double); int iceill (long double); long lceill (long double); long long llceill (long double); int ifloorl (long double); long lfloorl (long double); long long llfloorl (long double); void foo (long long *p) { int (*fn) (int); int n = 0; #define T(f) fn = (int (*) (int)) f; p[n++] = fn (1); T (irint) T (lrint) T (llrint) T (iround) T (lround) T (llround) T (iceil) T (lceil) T (llceil) T (ifloor) T (lfloor) T (llfloor) T (irintf) T (lrintf) T (llrintf) T (iroundf) T (lroundf) T (llroundf) T (iceilf) T (lceilf) T (llceilf) T (ifloorf) T (lfloorf) T (llfloorf) T (irintl) T (lrintl) T (llrintl) T (iroundl) T (lroundl) T (llroundl) T (iceill) T (lceill) T (llceill) T (ifloorl) T (lfloorl) T (llfloorl) }