1#include "compat-common.h" 2 3#ifdef SKIP_VA 4const int test_va = 0; 5#else 6const int test_va = 1; 7#endif 8 9typedef void (*fpi)(int); 10typedef void (*fpd)(double); 11 12extern void test1a (fpi); 13extern void test1b (fpi, int); 14extern void test1c (double, fpd); 15extern void test2a (fpi, fpd); 16extern void test2b (fpi, fpd, int); 17extern void test2c (fpi, int, fpd); 18extern void test2d (int, fpi, fpd); 19extern void test2e (fpi, fpd, int, double); 20extern void test2f (fpi, int, fpd, double); 21extern void test2g (fpi, int, double, fpd); 22extern void test2h (double, fpd, fpi, int); 23extern void test2i (double, fpd, int, fpi); 24extern void test2j (int, double, fpi, fpd); 25extern void testva (int, ...); 26 27int f1_val; 28double f2_val; 29 30void f1 (int i) { f1_val = i; } 31void f2 (double x) { f2_val = x; } 32 33void 34checki (int x, int v) 35{ 36 if (x != v) 37 DEBUG_CHECK 38} 39 40void 41checkd (double x, double v) 42{ 43 if (x != v) 44 DEBUG_CHECK 45} 46 47void 48testit (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 153void 154fnptr_by_value_1_x () 155{ 156 DEBUG_INIT 157 testit (); 158 DEBUG_FINI 159 160 if (fails != 0) 161 abort (); 162} 163