loop-18.c 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. /* { dg-do run } */
  2. extern void abort (void);
  3. int x, i, j;
  4. volatile int a, b, c, d, e, f, g, h;
  5. int k[11][101];
  6. int
  7. main ()
  8. {
  9. int niters;
  10. for (i = 1; i <= 10; i++)
  11. for (j = 1; j <= 10 * i; j++)
  12. k[i][j] = 1;
  13. a = 1; b = 11; c = 1; d = 0; e = 1; f = 10; g = 1; h = 1;
  14. niters = 0; i = -100; j = -100; x = -100;
  15. #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
  16. for (i = 1; i <= 10; i++)
  17. for (j = 1; j <= 10 * i; j++)
  18. {
  19. if (i < 1 || i > 10 || j < 1 || j > 10 * i || k[i][j] != 1)
  20. abort ();
  21. k[i][j]++;
  22. x = i * 1024 + (j & 1023);
  23. niters++;
  24. }
  25. if (i != 11 || j != 101 || x != 10340 || niters != 550)
  26. abort ();
  27. niters = 0; i = -100; j = -100; x = -100;
  28. #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
  29. for (i = a; i < b; i += c)
  30. for (j = d * i + e; j < g + i * f; j += h)
  31. {
  32. if (i < 1 || i > 10 || j < 1 || j > 10 * i || k[i][j] != 2)
  33. abort ();
  34. k[i][j]++;
  35. x = i * 1024 + (j & 1023);
  36. niters++;
  37. }
  38. if (i != 11 || j != 101 || x != 10340 || niters != 550)
  39. abort ();
  40. for (i = 1; i <= 10; i++)
  41. for (j = 1; j <= 10 * i; j++)
  42. if (k[i][j] == 3)
  43. k[i][j] = 0;
  44. else
  45. abort ();
  46. for (i = 0; i < 11; i++)
  47. for (j = 0; j < 101; j++)
  48. if (k[i][j] != 0)
  49. abort ();
  50. for (i = 0; i < 10; i++)
  51. for (j = 0; j < 10 * i; j++)
  52. k[i][j] = 1;
  53. a = 0; b = 10; c = 1; d = 0; e = 0; f = 10; g = 0; h = 1;
  54. niters = 0; i = -100; j = -100; x = -100;
  55. #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
  56. for (i = 0; i < 10; i++)
  57. for (j = 0; j < 10 * i; j++)
  58. {
  59. if (i < 0 || i >= 10 || j < 0 || j >= 10 * i || k[i][j] != 1)
  60. abort ();
  61. k[i][j]++;
  62. x = i * 1024 + (j & 1023);
  63. niters++;
  64. }
  65. if (i != 10 || j != 90 || x != 9305 || niters != 450)
  66. abort ();
  67. niters = 0; i = -100; j = -100; x = -100;
  68. #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
  69. for (i = a; i < b; i += c)
  70. for (j = d * i + e; j < g + i * f; j += h)
  71. {
  72. if (i < 0 || i >= 10 || j < 0 || j >= 10 * i || k[i][j] != 2)
  73. abort ();
  74. k[i][j]++;
  75. x = i * 1024 + (j & 1023);
  76. niters++;
  77. }
  78. if (i != 10 || j != 90 || x != 9305 || niters != 450)
  79. abort ();
  80. for (i = 0; i < 10; i++)
  81. for (j = 0; j < 10 * i; j++)
  82. if (k[i][j] == 3)
  83. k[i][j] = 0;
  84. else
  85. abort ();
  86. for (i = 0; i < 11; i++)
  87. for (j = 0; j < 101; j++)
  88. if (k[i][j] != 0)
  89. abort ();
  90. for (i = 4; i < 10; i++)
  91. for (j = -9 + 2 * i; j < i; j++)
  92. k[i][j + 1] = 1;
  93. a = 4; b = 10; c = 1; d = 2; e = -9; f = 1; g = 0; h = 1;
  94. niters = 0; i = -100; j = -100; x = -100;
  95. #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
  96. for (i = 4; i < 10; i++)
  97. for (j = -9 + 2 * i; j < i; j++)
  98. {
  99. if (i < 4 || i >= 10 || j < -9 + 2 * i || j >= i || k[i][j + 1] != 1)
  100. abort ();
  101. k[i][j + 1]++;
  102. x = i * 1024 + (j & 1023);
  103. niters++;
  104. }
  105. if (/*i != 10 || j != 9 || */x != 8199 || niters != 15)
  106. abort ();
  107. niters = 0; i = -100; j = -100; x = -100;
  108. #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
  109. for (i = a; i < b; i += c)
  110. for (j = d * i + e; j < g + i * f; j += h)
  111. {
  112. if (i < 4 || i >= 10 || j < -9 + 2 * i || j >= i || k[i][j + 1] != 2)
  113. abort ();
  114. k[i][j + 1]++;
  115. x = i * 1024 + (j & 1023);
  116. niters++;
  117. }
  118. if (/*i != 10 || j != 9 || */x != 8199 || niters != 15)
  119. abort ();
  120. for (i = 4; i < 10; i++)
  121. for (j = -9 + 2 * i; j < i; j++)
  122. if (k[i][j + 1] == 3)
  123. k[i][j + 1] = 0;
  124. else
  125. abort ();
  126. for (i = 0; i < 11; i++)
  127. for (j = 0; j < 101; j++)
  128. if (k[i][j] != 0)
  129. abort ();
  130. for (i = 1; i < 10; i += 2)
  131. for (j = 1; j < i + 1; j++)
  132. k[i][j] = 1;
  133. a = 1; b = 10; c = 2; d = 0; e = 1; f = 1; g = 1; h = 1;
  134. niters = 0; i = -100; j = -100; x = -100;
  135. #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
  136. for (i = 1; i < 10; i += 2)
  137. for (j = 1; j < i + 1; j++)
  138. {
  139. if (i < 1 || i >= 10 || j < 1 || j >= i + 1 || k[i][j] != 1)
  140. abort ();
  141. k[i][j]++;
  142. x = i * 1024 + (j & 1023);
  143. niters++;
  144. }
  145. if (i != 11 || j != 10 || x != 9225 || niters != 25)
  146. abort ();
  147. niters = 0; i = -100; j = -100; x = -100;
  148. #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
  149. for (i = a; i < b; i += c)
  150. for (j = d * i + e; j < g + i * f; j += h)
  151. {
  152. if (i < 1 || i >= 10 || j < 1 || j >= i + 1 || k[i][j] != 2)
  153. abort ();
  154. k[i][j]++;
  155. x = i * 1024 + (j & 1023);
  156. niters++;
  157. }
  158. if (i != 11 || j != 10 || x != 9225 || niters != 25)
  159. abort ();
  160. for (i = 1; i < 10; i += 2)
  161. for (j = 1; j < i + 1; j++)
  162. if (k[i][j] == 3)
  163. k[i][j] = 0;
  164. else
  165. abort ();
  166. for (i = 0; i < 11; i++)
  167. for (j = 0; j < 101; j++)
  168. if (k[i][j] != 0)
  169. abort ();
  170. for (j = -11; j >= -41; j -= 15)
  171. k[0][-j] = 1;
  172. a = 4; b = 8; c = 12; d = -8; e = -9; f = -3; g = 6; h = 15;
  173. niters = 0; i = -100; j = -100; x = -100;
  174. #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
  175. for (i = 4; i < 8; i += 12)
  176. for (j = -8 * i - 9; j < i * -3 + 6; j += 15)
  177. {
  178. if (i != 4 || j < -41 || j > -11 || k[0][-j] != 1)
  179. abort ();
  180. k[0][-j]++;
  181. x = i * 1024 + (j & 1023);
  182. niters++;
  183. }
  184. if (i != 16 || j != 4 || x != 5109 || niters != 3)
  185. abort ();
  186. niters = 0; i = -100; j = -100; x = -100;
  187. #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
  188. for (i = a; i < b; i += c)
  189. for (j = d * i + e; j < g + i * f; j += h)
  190. {
  191. if (i != 4 || j < -41 || j > -11 || k[0][-j] != 2)
  192. abort ();
  193. k[0][-j]++;
  194. x = i * 1024 + (j & 1023);
  195. niters++;
  196. }
  197. if (i != 16 || j != 4 || x != 5109 || niters != 3)
  198. abort ();
  199. for (j = -11; j >= -41; j -= 15)
  200. if (k[0][-j] == 3)
  201. k[0][-j] = 0;
  202. else
  203. abort ();
  204. for (j = -11; j >= -41; j--)
  205. if (k[0][-j] != 0)
  206. abort ();
  207. for (j = -34; j <= -7; j++)
  208. k[0][-j] = 1;
  209. a = -13; b = 7; c = 12; d = 3; e = 5; f = 0; g = -6; h = 1;
  210. niters = 0; i = -100; j = -100; x = -100;
  211. #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
  212. for (i = -13; i < 7; i += 12)
  213. for (j = 3 * i + 5; j < -6; j++)
  214. {
  215. if (i != -13 || j < -34 || j > -7 || k[0][-j] != 1)
  216. abort ();
  217. k[0][-j]++;
  218. x = i * 1024 + (j & 1023);
  219. niters++;
  220. }
  221. if (/*i != 11 || j != 2 || */x != -12295 || niters != 28)
  222. abort ();
  223. niters = 0; i = -100; j = -100; x = -100;
  224. #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
  225. for (i = a; i < b; i += c)
  226. for (j = d * i + e; j < g + i * f; j += h)
  227. {
  228. if (i != -13 || j < -34 || j > -7 || k[0][-j] != 2)
  229. abort ();
  230. k[0][-j]++;
  231. x = i * 1024 + (j & 1023);
  232. niters++;
  233. }
  234. if (/*i != 11 || j != 2 || */x != -12295 || niters != 28)
  235. abort ();
  236. for (j = -34; j <= -7; j++)
  237. if (k[0][-j] == 3)
  238. k[0][-j] = 0;
  239. else
  240. abort ();
  241. return 0;
  242. }