aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/compile/pr89663-2.c
blob: eeb5beb47eb493c06a34523ddb1fdc257c7fa964 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/* 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)
}