OSDN Git Service

2008-07-07 H.J. Lu <hongjiu.lu@intel.com>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / compat / fnptr-by-value-1_x.c
1 #include "compat-common.h"
2
3 #ifdef SKIP_VA
4 const int test_va = 0;
5 #else
6 const int test_va = 1;
7 #endif
8
9 typedef void (*fpi)(int);
10 typedef void (*fpd)(double);
11
12 extern void test1a (fpi);
13 extern void test1b (fpi, int);
14 extern void test1c (double, fpd);
15 extern void test2a (fpi, fpd);
16 extern void test2b (fpi, fpd, int);
17 extern void test2c (fpi, int, fpd);
18 extern void test2d (int, fpi, fpd);
19 extern void test2e (fpi, fpd, int, double);
20 extern void test2f (fpi, int, fpd, double);
21 extern void test2g (fpi, int, double, fpd);
22 extern void test2h (double, fpd, fpi, int);
23 extern void test2i (double, fpd, int, fpi);
24 extern void test2j (int, double, fpi, fpd);
25 extern void testva (int, ...);
26
27 int f1_val;
28 double f2_val;
29
30 void f1 (int i) { f1_val = i; }
31 void f2 (double x) { f2_val = x; }
32
33 void
34 checki (int x, int v)
35 {
36   if (x != v)
37     DEBUG_CHECK
38 }
39
40 void
41 checkd (double x, double v)
42 {
43   if (x != v)
44     DEBUG_CHECK
45 }
46
47 void
48 testit (void)
49 {
50   DEBUG_FPUTS ("test1a: ");
51   test1a (f1);
52   checki (f1_val, 1);
53   DEBUG_NL;
54   DEBUG_FPUTS ("test1b: ");
55   test1b (f1, 2);
56   checki (f1_val, 2);
57   DEBUG_NL;
58   DEBUG_FPUTS ("test1c: ");
59   test1c (3.0, f2);
60   checkd (f2_val, 3.0);
61   DEBUG_NL;
62   DEBUG_FPUTS ("test2a: ");
63   test2a (f1, f2);
64   checki (f1_val, 10);
65   checkd (f2_val, 10.0);
66   DEBUG_NL;
67   DEBUG_FPUTS ("test2b: ");
68   test2b (f1, f2, 11);
69   checki (f1_val, 11);
70   checkd (f2_val, 11.0);
71   DEBUG_NL;
72   DEBUG_FPUTS ("test2c: ");
73   test2c (f1, 12, f2);
74   checki (f1_val, 12);
75   checkd (f2_val, 12.0);
76   DEBUG_NL;
77   DEBUG_FPUTS ("test2d: ");
78   test2d (13, f1, f2);
79   checki (f1_val, 13);
80   checkd (f2_val, 13.0);
81   DEBUG_NL;
82   DEBUG_FPUTS ("test2e: ");
83   test2e (f1, f2, 14, 15.0);
84   checki (f1_val, 14);
85   checkd (f2_val, 15.0);
86   DEBUG_NL;
87   DEBUG_FPUTS ("test2f: ");
88   test2f (f1, 16, f2, 17.0);
89   checki (f1_val, 16);
90   checkd (f2_val, 17.0);
91   DEBUG_NL;
92   DEBUG_FPUTS ("test2g: ");
93   test2g (f1, 18, 19.0, f2);
94   checki (f1_val, 18);
95   checkd (f2_val, 19.0);
96   DEBUG_NL;
97   DEBUG_FPUTS ("test2h: ");
98   test2h (20.0, f2, f1, 21);
99   checkd (f2_val, 20.0);
100   checki (f1_val, 21);
101   DEBUG_NL;
102   DEBUG_FPUTS ("test2i: ");
103   test2i (22.0, f2, 23, f1);
104   checkd (f2_val, 22.0);
105   checki (f1_val, 23);
106   DEBUG_NL;
107   DEBUG_FPUTS ("test2j: ");
108   test2j (24, 25.0, f1, f2);
109   checki (f1_val, 24);
110   checkd (f2_val, 25.0);
111   if (test_va)
112     {
113       DEBUG_NL;
114       DEBUG_FPUTS ("testva: ");
115       testva (1, f1);
116       DEBUG_NL;
117       DEBUG_FPUTS ("        ");
118       testva (2, f1, f1);
119       DEBUG_NL;
120       DEBUG_FPUTS ("        ");
121       testva (3, f1, f1, f1);
122       DEBUG_NL;
123       DEBUG_FPUTS ("        ");
124       testva (4, f1, f1, f1, f1);
125       DEBUG_NL;
126       DEBUG_FPUTS ("        ");
127       testva (5, f1, f1, f1, f1, f1);
128       DEBUG_NL;
129       DEBUG_FPUTS ("        ");
130       testva (6, f1, f1, f1, f1, f1, f1);
131       DEBUG_NL;
132       DEBUG_FPUTS ("        ");
133       testva (7, f1, f1, f1, f1, f1, f1, f1);
134       DEBUG_NL;
135       DEBUG_FPUTS ("        ");
136       testva (8, f1, f1, f1, f1, f1, f1, f1, f1);
137       DEBUG_NL;
138       DEBUG_FPUTS ("        ");
139       testva (9, f1, f1, f1, f1, f1, f1, f1, f1, f1);
140       DEBUG_NL;
141       DEBUG_FPUTS ("        ");
142       testva (10, f1, f1, f1, f1, f1, f1, f1, f1, f1, f1);
143       DEBUG_NL;
144       DEBUG_FPUTS ("        ");
145       testva (11, f1, f1, f1, f1, f1, f1, f1, f1, f1, f1, f1);
146       DEBUG_NL;
147       DEBUG_FPUTS ("        ");
148       testva (12, f1, f1, f1, f1, f1, f1, f1, f1, f1, f1, f1, f1);
149     }
150   DEBUG_NL;
151 }
152
153 void
154 fnptr_by_value_1_x ()
155 {
156   DEBUG_INIT
157   testit ();
158   DEBUG_FINI
159
160   if (fails != 0)
161     abort ();
162 }