loop-17.c 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  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
  19. #pragma omp for collapse(7) 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
  45. #pragma omp for collapse(7) 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
  80. #pragma omp for collapse(5) 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
  102. #pragma omp for collapse(5) 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
  131. #pragma omp for collapse(3) 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
  149. #pragma omp for collapse(3) 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. return 0;
  171. }