loop-24.c 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  1. /* { dg-do run } */
  2. extern void abort (void);
  3. signed char v[5][7][9][21][4][42][3];
  4. volatile int zero = 0, one = 1, two = 2, three = 3;
  5. volatile int five = 5, seven = 7, nine = 9, eleven = 11;
  6. int
  7. main ()
  8. {
  9. for (int i = 0; i < 5; i++)
  10. for (int j = 0; j < 7; j++)
  11. for (int k = 0; k < 9; k++)
  12. for (int l = 2 * j; l < 3 * j; l++)
  13. for (int m = 7; m < 11; m++)
  14. for (int n = l; n < 2 * l; n++)
  15. for (int o = 0; o < 3; o++)
  16. v[i][j][k][l][m - 7][n][o] = 1;
  17. int niters = 0;
  18. #pragma omp parallel master reduction(task, +:niters)
  19. #pragma omp taskloop collapse(7) in_reduction(+:niters)
  20. for (int i = 0; i < 5; i++)
  21. for (int j = 0; j < 7; j++)
  22. for (int k = 0; k < 9; k++)
  23. for (int l = 2 * j; l < 3 * j; l++)
  24. for (int m = 7; m < 11; m++)
  25. for (int n = l; n < 2 * l; n++)
  26. for (int o = 0; o < 3; o++)
  27. {
  28. niters++;
  29. if (i < 0 || i >= 5
  30. || j < 0 || j >= 7
  31. || k < 0 || k >= 9
  32. || l < 2 * j || l >= 3 * j
  33. || m < 7 || m >= 11
  34. || n < l || n >= 2 * l
  35. || o < 0 || o >= 3)
  36. abort ();
  37. if (v[i][j][k][l][m - 7][n][o] != 1)
  38. abort ();
  39. v[i][j][k][l][m - 7][n][o]++;
  40. }
  41. if (niters != 117180)
  42. abort ();
  43. int niters2 = 0;
  44. #pragma omp parallel master reduction(task, +:niters2)
  45. #pragma omp taskloop collapse(7) in_reduction(+:niters2)
  46. for (int i = zero; i < five; i += one)
  47. for (int j = seven - one; j >= zero; j -= one)
  48. for (int k = nine - one; k >= zero; k += -one)
  49. for (int l = two * j + zero; l < three * j; l += one)
  50. for (int m = eleven - one; m >= seven; m -= one)
  51. for (int n = two * l - one; n > one * l - one; n -= one)
  52. for (int o = zero; o < three; o += one)
  53. {
  54. niters2++;
  55. if (i < 0 || i >= 5
  56. || j < 0 || j >= 7
  57. || k < 0 || k >= 9
  58. || l < 2 * j || l >= 3 * j
  59. || m < 7 || m >= 11
  60. || n < l || n >= 2 * l
  61. || o < 0 || o >= 3)
  62. abort ();
  63. if (v[i][j][k][l][m - 7][n][o] != 2)
  64. abort ();
  65. v[i][j][k][l][m - 7][n][o]++;
  66. }
  67. if (niters2 != 117180)
  68. abort ();
  69. for (int i = 0; i < 5; i++)
  70. for (int j = 0; j < 7; j++)
  71. for (int k = 0; k < 9; k++)
  72. for (int l = 2 * j; l < 3 * j; l++)
  73. for (int m = 7; m < 11; m++)
  74. for (int n = l; n < 2 * l; n++)
  75. for (int o = 0; o < 3; o++)
  76. if (v[i][j][k][l][m - 7][n][o] != 3)
  77. abort ();
  78. int niters3 = 0;
  79. #pragma omp parallel master reduction(task, +:niters3)
  80. #pragma omp taskloop collapse(5) in_reduction(+:niters3)
  81. for (int i = 4; i >= 0; i--)
  82. for (int j = 6; j >= 0; --j)
  83. for (int l = 3 * j - 1; l >= 2 * j; l--)
  84. for (int n = 2 * l + -1; n > l - 1; --n)
  85. for (int o = 2; o >= 0; o--)
  86. {
  87. niters3++;
  88. if (i < 0 || i >= 5
  89. || j < 0 || j >= 7
  90. || l < 2 * j || l >= 3 * j
  91. || n < l || n >= 2 * l
  92. || o < 0 || o >= 3)
  93. abort ();
  94. if (v[i][j][0][l][0][n][o] != 3)
  95. abort ();
  96. v[i][j][0][l][0][n][o]++;
  97. }
  98. if (niters3 != 3255)
  99. abort ();
  100. int niters4 = 0;
  101. #pragma omp parallel master reduction(task, +:niters4)
  102. #pragma omp taskloop collapse(5) in_reduction(+:niters4)
  103. for (int i = zero; i < five; i += one)
  104. for (int j = zero; j <= seven - one; j += one)
  105. for (int l = j * two; l < three * j + zero; l += one)
  106. for (int n = one * l; n <= l * two - one; n += one)
  107. for (int o = zero; o < three; o += one)
  108. {
  109. niters4++;
  110. if (i < 0 || i >= 5
  111. || j < 0 || j >= 7
  112. || l < 2 * j || l >= 3 * j
  113. || n < l || n >= 2 * l
  114. || o < 0 || o >= 3)
  115. abort ();
  116. if (v[i][j][0][l][0][n][o] != 4)
  117. abort ();
  118. v[i][j][0][l][0][n][o]++;
  119. }
  120. if (niters4 != 3255)
  121. abort ();
  122. for (int i = 0; i < 5; i++)
  123. for (int j = 0; j < 7; j++)
  124. for (int l = 2 * j; l < 3 * j; l++)
  125. for (int n = l; n < 2 * l; n++)
  126. for (int o = 0; o < 3; o++)
  127. if (v[i][j][0][l][0][n][o] != 5)
  128. abort ();
  129. int niters5 = 0;
  130. #pragma omp parallel master reduction(task, +:niters5)
  131. #pragma omp taskloop collapse(3) in_reduction(+:niters5)
  132. for (int j = 6; j >= 0; --j)
  133. for (int l = 2 * j; l <= 3 * j - 1; l++)
  134. for (int n = 2 * l + -1; n > l - 1; --n)
  135. {
  136. niters5++;
  137. if (j < 0 || j >= 7
  138. || l < 2 * j || l >= 3 * j
  139. || n < l || n >= 2 * l)
  140. abort ();
  141. if (v[0][j][0][l][0][n][0] != 5)
  142. abort ();
  143. v[0][j][0][l][0][n][0]++;
  144. }
  145. if (niters5 != 217)
  146. abort ();
  147. int niters6 = 0;
  148. #pragma omp parallel master reduction(task, +:niters6)
  149. #pragma omp taskloop collapse(3) in_reduction(+:niters6)
  150. for (int j = seven - one; j > - one; j -= one)
  151. for (int l = j * three - one; l >= j * two + zero; l += -one)
  152. for (int n = two * l - one; n > l - one; n -= one)
  153. {
  154. niters6++;
  155. if (j < 0 || j >= 7
  156. || l < 2 * j || l >= 3 * j
  157. || n < l || n >= 2 * l)
  158. abort ();
  159. if (v[0][j][0][l][0][n][0] != 6)
  160. abort ();
  161. v[0][j][0][l][0][n][0]++;
  162. }
  163. if (niters6 != 217)
  164. abort ();
  165. for (int j = 0; j < 7; j++)
  166. for (int l = 2 * j; l < 3 * j; l++)
  167. for (int n = l; n < 2 * l; n++)
  168. if (v[0][j][0][l][0][n][0] != 7)
  169. abort ();
  170. {
  171. static int i, j, x;
  172. static volatile int a, b, c, d, e, f, g, h;
  173. static int w[13][27];
  174. for (i = -4; i < 8; i++)
  175. for (j = 3 * i; j > 2 * i; j--)
  176. w[i + 5][j + 5] = 1;
  177. a = -4; b = 8; c = 1; d = 3; e = 0; f = 2; g = 0; h = -1;
  178. niters = 0; i = -100; j = -100; x = -100;
  179. #pragma omp parallel master reduction(task, +:niters)
  180. #pragma omp taskloop collapse(2) lastprivate (i, j, x) in_reduction(+:niters)
  181. for (i = -4; i < 8; i++)
  182. for (j = 3 * i; j > 2 * i; j--)
  183. {
  184. if (i < -4 || i >= 8 || j > 3 * i || j <= i * 2 || w[i + 5][j + 5] != 1)
  185. abort ();
  186. w[i + 5][j + 5]++;
  187. x = i * 1024 + (j & 1023);
  188. niters++;
  189. }
  190. if (i != 8 || j != 14 || x != 7183 || niters != 28)
  191. abort ();
  192. niters = 0; i = -100; j = -100; x = -100;
  193. #pragma omp parallel master reduction(task, +:niters)
  194. #pragma omp taskloop collapse(2) lastprivate (i, j, x) in_reduction(+:niters)
  195. for (i = a; i < b; i += c)
  196. for (j = d * i + e; j > g + i * f; j += h)
  197. {
  198. if (i < -4 || i >= 8 || j > 3 * i || j <= i * 2 || w[i + 5][j + 5] != 2)
  199. abort ();
  200. w[i + 5][j + 5]++;
  201. x = i * 1024 + (j & 1023);
  202. niters++;
  203. }
  204. if (i != 8 || j != 14 || x != 7183 || niters != 28)
  205. abort ();
  206. for (int i = -4; i < 8; i++)
  207. for (int j = 3 * i; j > 2 * i; j--)
  208. if (w[i + 5][j + 5] == 3)
  209. w[i + 5][j + 5] = 0;
  210. else
  211. abort ();
  212. for (i = -2; i < 4; i++)
  213. for (j = -2 * i + 3; j > -3; j -= 2)
  214. w[i + 5][j + 5] = 1;
  215. a = -2; b = 4; c = 1; d = -2; e = 3; f = 0; g = -3; h = -2;
  216. niters = 0; i = -100; j = -100; x = -100;
  217. #pragma omp parallel master reduction(task, +:niters)
  218. #pragma omp taskloop collapse(2) lastprivate (i, j, x) in_reduction(+:niters)
  219. for (i = -2; i < 4; i++)
  220. for (j = -2 * i + 3; j > -3; j -= 2)
  221. {
  222. if (i < -2 || i >= 4 || j <= -3 || j > -2 * i + 3 || w[i + 5][j + 5] != 1)
  223. abort ();
  224. w[i + 5][j + 5]++;
  225. x = i * 1024 + (j & 1023);
  226. niters++;
  227. }
  228. if (/* i != 4 || j != -3 || */x != 3071 || niters != 15)
  229. abort ();
  230. niters = 0; i = -100; j = -100; x = -100;
  231. #pragma omp parallel master reduction(task, +:niters)
  232. #pragma omp taskloop collapse(2) lastprivate (i, j, x) in_reduction(+:niters)
  233. for (i = a; i < b; i += c)
  234. for (j = d * i + e; j > g + i * f; j += h)
  235. {
  236. if (i < -2 || i >= 4 || j <= -3 || j > -2 * i + 3 || w[i + 5][j + 5] != 2)
  237. abort ();
  238. w[i + 5][j + 5]++;
  239. x = i * 1024 + (j & 1023);
  240. niters++;
  241. }
  242. if (/*i != 4 || j != -3 || */x != 3071 || niters != 15)
  243. abort ();
  244. for (i = -2; i < 4; i++)
  245. for (j = -2 * i + 3; j > -3; j -= 2)
  246. if (w[i + 5][j + 5] == 3)
  247. w[i + 5][j + 5] = 0;
  248. else
  249. abort ();
  250. for (i = 3; i > -3; i--)
  251. for (j = -2 * i + 7; j > 2 * i + 1; j--)
  252. w[i + 5][j + 5] = 1;
  253. a = 3; b = -3; c = -1; d = -2; e = 7; f = 2; g = 1; h = -1;
  254. niters = 0; i = -100; j = -100; x = -100;
  255. #pragma omp parallel master reduction(task, +:niters)
  256. #pragma omp taskloop collapse(2) lastprivate (i, j, x) in_reduction(+:niters)
  257. for (i = 3; i > -3; i--)
  258. for (j = -2 * i + 7; j > 2 * i + 1; j--)
  259. {
  260. if (i <= -3 || i > 3 || j <= 2 * i + 1 || j > -2 * i + 7 || w[i + 5][j + 5] != 1)
  261. abort ();
  262. w[i + 5][j + 5]++;
  263. x = i * 1024 + (j & 1023);
  264. niters++;
  265. }
  266. if (i != -3 || j != -3 || x != -1026 || niters != 32)
  267. abort ();
  268. niters = 0; i = -100; j = -100; x = -100;
  269. #pragma omp parallel master reduction(task, +:niters)
  270. #pragma omp taskloop collapse(2) lastprivate (i, j, x) in_reduction(+:niters)
  271. for (i = a; i > b; i += c)
  272. for (j = d * i + e; j > g + i * f; j += h)
  273. {
  274. if (i <= -3 || i > 3 || j <= 2 * i + 1 || j > -2 * i + 7 || w[i + 5][j + 5] != 2)
  275. abort ();
  276. w[i + 5][j + 5]++;
  277. x = i * 1024 + (j & 1023);
  278. niters++;
  279. }
  280. if (i != -3 || j != -3 || x != -1026 || niters != 32)
  281. abort ();
  282. for (i = 3; i > -3; i--)
  283. for (j = -2 * i + 7; j > 2 * i + 1; j--)
  284. if (w[i + 5][j + 5] == 3)
  285. w[i + 5][j + 5] = 0;
  286. else
  287. abort ();
  288. for (i = 3; i > -3; i--)
  289. for (j = 2 * i + 7; j > -2 * i + 1; j--)
  290. w[i + 5][j + 5] = 1;
  291. a = 3; b = -3; c = -1; d = 2; e = 7; f = -2; g = 1; h = -1;
  292. niters = 0; i = -100; j = -100; x = -100;
  293. #pragma omp parallel master reduction(task, +:niters)
  294. #pragma omp taskloop collapse(2) lastprivate (i, j, x) in_reduction(+:niters)
  295. for (i = 3; i > -3; i--)
  296. for (j = 2 * i + 7; j > -2 * i + 1; j--)
  297. {
  298. if (i <= -3 || i > 3 || j <= -2 * i + 1 || j > 2 * i + 7 || w[i + 5][j + 5] != 1)
  299. abort ();
  300. w[i + 5][j + 5]++;
  301. x = i * 1024 + (j & 1023);
  302. niters++;
  303. }
  304. if (/*i != -3 || j != 3 || */x != -1020 || niters != 50)
  305. abort ();
  306. niters = 0; i = -100; j = -100; x = -100;
  307. #pragma omp parallel master reduction(task, +:niters)
  308. #pragma omp taskloop collapse(2) lastprivate (i, j, x) in_reduction(+:niters)
  309. for (i = a; i > b; i += c)
  310. for (j = d * i + e; j > g + i * f; j += h)
  311. {
  312. if (i <= -3 || i > 3 || j <= -2 * i + 1 || j > 2 * i + 7 || w[i + 5][j + 5] != 2)
  313. abort ();
  314. w[i + 5][j + 5]++;
  315. x = i * 1024 + (j & 1023);
  316. niters++;
  317. }
  318. if (/*i != -3 || j != 3 || */x != -1020 || niters != 50)
  319. abort ();
  320. for (i = 3; i > -3; i--)
  321. for (j = 2 * i + 7; j > -2 * i + 1; j--)
  322. if (w[i + 5][j + 5] == 3)
  323. w[i + 5][j + 5] = 0;
  324. else
  325. abort ();
  326. for (i = 6; i > -6; i--)
  327. for (j = 2 * i + 7; j <= -2 * i + 1; j++)
  328. w[i + 5][j + 5] = 1;
  329. a = 6; b = -6; c = -1; d = 2; e = 7; f = -2; g = 2; h = 1;
  330. niters = 0; i = -100; j = -100; x = -100;
  331. #pragma omp parallel master reduction(task, +:niters)
  332. #pragma omp taskloop collapse(2) lastprivate (i, j, x) in_reduction(+:niters)
  333. for (i = 6; i > -6; i--)
  334. for (j = 2 * i + 7; j <= -2 * i + 1; j++)
  335. {
  336. if (i <= -6 || i > 6 || j < 2 * i + 7 || j >= -2 * i + 2 || w[i + 5][j + 5] != 1)
  337. abort ();
  338. w[i + 5][j + 5]++;
  339. x = i * 1024 + (j & 1023);
  340. niters++;
  341. }
  342. if (i != -6 || j != 12 || x != -5109 || niters != 36)
  343. abort ();
  344. niters = 0; i = -100; j = -100; x = -100;
  345. #pragma omp parallel master reduction(task, +:niters)
  346. #pragma omp taskloop collapse(2) lastprivate (i, j, x) in_reduction(+:niters)
  347. for (i = a; i > b; i += c)
  348. for (j = d * i + e; j < g + i * f; j += h)
  349. {
  350. if (i <= -6 || i > 6 || j < 2 * i + 7 || j >= -2 * i + 2 || w[i + 5][j + 5] != 2)
  351. abort ();
  352. w[i + 5][j + 5]++;
  353. x = i * 1024 + (j & 1023);
  354. niters++;
  355. }
  356. if (i != -6 || j != 12 || x != -5109 || niters != 36)
  357. abort ();
  358. for (i = 6; i > -6; i--)
  359. for (j = 2 * i + 7; j <= -2 * i + 1; j++)
  360. if (w[i + 5][j + 5] == 3)
  361. w[i + 5][j + 5] = 0;
  362. else
  363. abort ();
  364. for (i = 6; i > -6; i -= 2)
  365. for (j = -2 * i + 7; j <= 2 * i + 1; j++)
  366. w[i + 5][j + 5] = 1;
  367. a = 6; b = -6; c = -2; d = -2; e = 7; f = 2; g = 2; h = 1;
  368. niters = 0; i = -100; j = -100; x = -100;
  369. #pragma omp parallel master reduction(task, +:niters)
  370. #pragma omp taskloop collapse(2) lastprivate (i, j, x) in_reduction(+:niters)
  371. for (i = 6; i > -6; i -= 2)
  372. for (j = -2 * i + 7; j <= 2 * i + 1; j++)
  373. {
  374. if (i <= -6 || i > 6 || j < -2 * i + 7 || j >= 2 * i + 2 || w[i + 5][j + 5] != 1)
  375. abort ();
  376. w[i + 5][j + 5]++;
  377. x = i * 1024 + (j & 1023);
  378. niters++;
  379. }
  380. if (/*i != -6 || j != 15 || */x != 2053 || niters != 33)
  381. abort ();
  382. niters = 0; i = -100; j = -100; x = -100;
  383. #pragma omp parallel master reduction(task, +:niters)
  384. #pragma omp taskloop collapse(2) lastprivate (i, j, x) in_reduction(+:niters)
  385. for (i = a; i > b; i += c)
  386. for (j = d * i + e; j < g + i * f; j += h)
  387. {
  388. if (i <= -6 || i > 6 || j < -2 * i + 7 || j >= 2 * i + 2 || w[i + 5][j + 5] != 2)
  389. abort ();
  390. w[i + 5][j + 5]++;
  391. x = i * 1024 + (j & 1023);
  392. niters++;
  393. }
  394. if (/*i != -6 || j != 15 || */x != 2053 || niters != 33)
  395. abort ();
  396. for (i = 6; i > -6; i -= 2)
  397. for (j = -2 * i + 7; j <= 2 * i + 1; j++)
  398. if (w[i + 5][j + 5] == 3)
  399. w[i + 5][j + 5] = 0;
  400. else
  401. abort ();
  402. }
  403. return 0;
  404. }