pr70680-2.c 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /* PR middle-end/70680 */
  2. int v;
  3. void
  4. f1 (void)
  5. {
  6. int i = 0, j = 0;
  7. #pragma omp task default(shared) if(0)
  8. {
  9. #pragma omp simd collapse(2)
  10. for (i = 0; i < 10; i++)
  11. for (j = 0; j < 10; j++)
  12. ;
  13. v = i + j;
  14. }
  15. if (i != 10 || j != 10)
  16. __builtin_abort ();
  17. }
  18. void
  19. f2 (void)
  20. {
  21. int i = 0, j = 0;
  22. #pragma omp task default(shared) if(0)
  23. {
  24. #pragma omp simd collapse(2)
  25. for (i = 0; i < 10; i++)
  26. for (j = 0; j < 10; j++)
  27. ;
  28. }
  29. if (i != 10 || j != 10)
  30. __builtin_abort ();
  31. }
  32. void
  33. f3 (void)
  34. {
  35. int i = 0, j = 0;
  36. #pragma omp task default(shared) if(0)
  37. {
  38. #pragma omp simd collapse(2) lastprivate (i, j)
  39. for (i = 0; i < 10; i++)
  40. for (j = 0; j < 10; j++)
  41. ;
  42. v = i + j;
  43. }
  44. if (i != 10 || j != 10)
  45. __builtin_abort ();
  46. }
  47. void
  48. f4 (void)
  49. {
  50. int i = 0, j = 0;
  51. #pragma omp task default(shared) if(0)
  52. {
  53. #pragma omp simd collapse(2) lastprivate (i, j)
  54. for (i = 0; i < 10; i++)
  55. for (j = 0; j < 10; j++)
  56. ;
  57. }
  58. if (i != 10 || j != 10)
  59. __builtin_abort ();
  60. }
  61. int
  62. main ()
  63. {
  64. f1 ();
  65. if (v++ != 20)
  66. __builtin_abort ();
  67. f2 ();
  68. f3 ();
  69. if (v++ != 20)
  70. __builtin_abort ();
  71. f4 ();
  72. return 0;
  73. }