1#ifndef VARS 2#define VARS 3int a[1500]; 4float b[10][15][10]; 5__attribute__((noreturn)) void 6noreturn (void) 7{ 8 for (;;); 9} 10#endif 11#ifndef SC 12#define SC 13#endif 14 15__attribute__((noinline, noclone)) void 16N(f0) (void) 17{ 18 int i; 19#pragma omp F S 20 for (i = 0; i < 1500; i++) 21 a[i] += 2; 22} 23 24__attribute__((noinline, noclone)) void 25N(f1) (void) 26{ 27#pragma omp F S 28 for (unsigned int i = __INT_MAX__; i < 3000U + __INT_MAX__; i += 2) 29 a[(i - __INT_MAX__) >> 1] -= 2; 30} 31 32__attribute__((noinline, noclone)) void 33N(f2) (void) 34{ 35 unsigned long long i; 36#pragma omp F S 37 for (i = __LONG_LONG_MAX__ + 4500ULL - 27; 38 i > __LONG_LONG_MAX__ - 27ULL; i -= 3) 39 a[(i + 26LL - __LONG_LONG_MAX__) / 3] -= 4; 40} 41 42__attribute__((noinline, noclone)) void 43N(f3) (long long n1, long long n2, long long s3) 44{ 45#pragma omp F S 46 for (long long i = n1 + 23; i > n2 - 25; i -= s3) 47 a[i + 48] += 7; 48} 49 50__attribute__((noinline, noclone)) void 51N(f4) (void) 52{ 53 unsigned int i; 54#pragma omp F S 55 for (i = 30; i < 20; i += 2) 56 a[i] += 10; 57} 58 59__attribute__((noinline, noclone)) void 60N(f5) (int n11, int n12, int n21, int n22, int n31, int n32, 61 int s1, int s2, int s3) 62{ 63 SC int v1, v2, v3; 64#pragma omp F S collapse(3) 65 for (v1 = n11; v1 < n12; v1 += s1) 66 for (v2 = n21; v2 < n22; v2 += s2) 67 for (v3 = n31; v3 < n32; v3 += s3) 68 b[v1][v2][v3] += 2.5; 69} 70 71__attribute__((noinline, noclone)) void 72N(f6) (int n11, int n12, int n21, int n22, long long n31, long long n32, 73 int s1, int s2, long long int s3) 74{ 75 SC int v1, v2; 76 SC long long v3; 77#pragma omp F S collapse(3) 78 for (v1 = n11; v1 > n12; v1 += s1) 79 for (v2 = n21; v2 > n22; v2 += s2) 80 for (v3 = n31; v3 > n32; v3 += s3) 81 b[v1][v2 / 2][v3] -= 4.5; 82} 83 84__attribute__((noinline, noclone)) void 85N(f7) (void) 86{ 87 SC unsigned int v1, v3; 88 SC unsigned long long v2; 89#pragma omp F S collapse(3) 90 for (v1 = 0; v1 < 20; v1 += 2) 91 for (v2 = __LONG_LONG_MAX__ + 16ULL; 92 v2 > __LONG_LONG_MAX__ - 29ULL; v2 -= 3) 93 for (v3 = 10; v3 > 0; v3--) 94 b[v1 >> 1][(v2 - __LONG_LONG_MAX__ + 64) / 3 - 12][v3 - 1] += 5.5; 95} 96 97__attribute__((noinline, noclone)) void 98N(f8) (void) 99{ 100 SC long long v1, v2, v3; 101#pragma omp F S collapse(3) 102 for (v1 = 0; v1 < 20; v1 += 2) 103 for (v2 = 30; v2 < 20; v2++) 104 for (v3 = 10; v3 < 0; v3--) 105 b[v1][v2][v3] += 5.5; 106} 107 108__attribute__((noinline, noclone)) void 109N(f9) (void) 110{ 111 int i; 112#pragma omp F S 113 for (i = 20; i < 10; i++) 114 { 115 a[i] += 2; 116 noreturn (); 117 a[i] -= 4; 118 } 119} 120 121__attribute__((noinline, noclone)) void 122N(f10) (void) 123{ 124 SC int i; 125#pragma omp F S collapse(3) 126 for (i = 0; i < 10; i++) 127 for (int j = 10; j < 8; j++) 128 for (long k = -10; k < 10; k++) 129 { 130 b[i][j][k] += 4; 131 noreturn (); 132 b[i][j][k] -= 8; 133 } 134} 135 136__attribute__((noinline, noclone)) void 137N(f11) (int n) 138{ 139 int i; 140#pragma omp F S 141 for (i = 20; i < n; i++) 142 { 143 a[i] += 8; 144 noreturn (); 145 a[i] -= 16; 146 } 147} 148 149__attribute__((noinline, noclone)) void 150N(f12) (int n) 151{ 152 SC int i; 153#pragma omp F S collapse(3) 154 for (i = 0; i < 10; i++) 155 for (int j = n; j < 8; j++) 156 for (long k = -10; k < 10; k++) 157 { 158 b[i][j][k] += 16; 159 noreturn (); 160 b[i][j][k] -= 32; 161 } 162} 163 164__attribute__((noinline, noclone)) void 165N(f13) (void) 166{ 167 int *i; 168#pragma omp F S 169 for (i = a; i < &a[1500]; i++) 170 i[0] += 2; 171} 172 173__attribute__((noinline, noclone)) void 174N(f14) (void) 175{ 176 SC float *i; 177#pragma omp F S collapse(3) 178 for (i = &b[0][0][0]; i < &b[0][0][10]; i++) 179 for (float *j = &b[0][15][0]; j > &b[0][0][0]; j -= 10) 180 for (float *k = &b[0][0][10]; k > &b[0][0][0]; --k) 181 b[i - &b[0][0][0]][(j - &b[0][0][0]) / 10 - 1][(k - &b[0][0][0]) - 1] 182 -= 3.5; 183} 184 185__attribute__((noinline, noclone)) int 186N(test) (void) 187{ 188 int i, j, k; 189 for (i = 0; i < 1500; i++) 190 a[i] = i - 25; 191 N(f0) (); 192 for (i = 0; i < 1500; i++) 193 if (a[i] != i - 23) 194 return 1; 195 N(f1) (); 196 for (i = 0; i < 1500; i++) 197 if (a[i] != i - 25) 198 return 1; 199 N(f2) (); 200 for (i = 0; i < 1500; i++) 201 if (a[i] != i - 29) 202 return 1; 203 N(f3) (1500LL - 1 - 23 - 48, -1LL + 25 - 48, 1LL); 204 for (i = 0; i < 1500; i++) 205 if (a[i] != i - 22) 206 return 1; 207 N(f3) (1500LL - 1 - 23 - 48, 1500LL - 1, 7LL); 208 for (i = 0; i < 1500; i++) 209 if (a[i] != i - 22) 210 return 1; 211 N(f4) (); 212 for (i = 0; i < 1500; i++) 213 if (a[i] != i - 22) 214 return 1; 215 for (i = 0; i < 10; i++) 216 for (j = 0; j < 15; j++) 217 for (k = 0; k < 10; k++) 218 b[i][j][k] = i - 2.5 + 1.5 * j - 1.5 * k; 219 N(f5) (0, 10, 0, 15, 0, 10, 1, 1, 1); 220 for (i = 0; i < 10; i++) 221 for (j = 0; j < 15; j++) 222 for (k = 0; k < 10; k++) 223 if (b[i][j][k] != i + 1.5 * j - 1.5 * k) 224 return 1; 225 N(f5) (0, 10, 30, 15, 0, 10, 4, 5, 6); 226 for (i = 0; i < 10; i++) 227 for (j = 0; j < 15; j++) 228 for (k = 0; k < 10; k++) 229 if (b[i][j][k] != i + 1.5 * j - 1.5 * k) 230 return 1; 231 N(f6) (9, -1, 29, 0, 9, -1, -1, -2, -1); 232 for (i = 0; i < 10; i++) 233 for (j = 0; j < 15; j++) 234 for (k = 0; k < 10; k++) 235 if (b[i][j][k] != i - 4.5 + 1.5 * j - 1.5 * k) 236 return 1; 237 N(f7) (); 238 for (i = 0; i < 10; i++) 239 for (j = 0; j < 15; j++) 240 for (k = 0; k < 10; k++) 241 if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k) 242 return 1; 243 N(f8) (); 244 for (i = 0; i < 10; i++) 245 for (j = 0; j < 15; j++) 246 for (k = 0; k < 10; k++) 247 if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k) 248 return 1; 249 N(f9) (); 250 N(f10) (); 251 N(f11) (10); 252 N(f12) (12); 253 for (i = 0; i < 1500; i++) 254 if (a[i] != i - 22) 255 return 1; 256 for (i = 0; i < 10; i++) 257 for (j = 0; j < 15; j++) 258 for (k = 0; k < 10; k++) 259 if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k) 260 return 1; 261 N(f13) (); 262 N(f14) (); 263 for (i = 0; i < 1500; i++) 264 if (a[i] != i - 20) 265 return 1; 266 for (i = 0; i < 10; i++) 267 for (j = 0; j < 15; j++) 268 for (k = 0; k < 10; k++) 269 if (b[i][j][k] != i - 2.5 + 1.5 * j - 1.5 * k) 270 return 1; 271 return 0; 272} 273