depend-iterator-2.c 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. volatile int v;
  2. __attribute__((noipa)) void
  3. foo (int *p, int i)
  4. {
  5. #pragma omp task depend (out: p[0])
  6. v++;
  7. #pragma omp task depend (in: p[0])
  8. v++;
  9. #pragma omp task depend (inout: p[0])
  10. v++;
  11. #pragma omp task depend (mutexinoutset: p[0])
  12. v++;
  13. #pragma omp task depend (out: p[0]) depend (in: p[1])
  14. v++;
  15. #pragma omp task depend (in: p[0]) depend (inout: p[1])
  16. v++;
  17. #pragma omp task depend (inout: p[0]) depend (mutexinoutset: p[1])
  18. v++;
  19. #pragma omp task depend (mutexinoutset: p[0]) depend (out: p[1])
  20. v++;
  21. #pragma omp task depend (iterator (j=0:2) , out : p[j])
  22. v++;
  23. #pragma omp task depend (iterator (j=0:2) , in : p[j])
  24. v++;
  25. #pragma omp task depend (iterator (j=0:2) , inout : p[j])
  26. v++;
  27. #pragma omp task depend (iterator (j=0:2) , mutexinoutset : p[j])
  28. v++;
  29. #pragma omp task depend (iterator (j=0:2) , out : p[j]) depend (iterator (j=0:2) , in : p[j + 2])
  30. v++;
  31. #pragma omp task depend (iterator (j=0:2) , in : p[j]) depend (iterator (j=0:2) , inout : p[j + 2])
  32. v++;
  33. #pragma omp task depend (iterator (j=0:2) , inout : p[j]) depend (iterator (j=0:2) , mutexinoutset : p[j + 2])
  34. v++;
  35. #pragma omp task depend (iterator (j=0:2) , mutexinoutset : p[j]) depend (iterator (j=0:2) , out : p[j + 2])
  36. v++;
  37. #pragma omp task depend (iterator (j=0:i) , out : p[j])
  38. v++;
  39. #pragma omp task depend (iterator (j=0:i) , in : p[j])
  40. v++;
  41. #pragma omp task depend (iterator (j=0:i) , inout : p[j])
  42. v++;
  43. #pragma omp task depend (iterator (j=0:i) , mutexinoutset : p[j])
  44. v++;
  45. #pragma omp task depend (iterator (j=0:i) , out : p[j]) depend (iterator (j=0:i) , in : p[j + 2])
  46. v++;
  47. #pragma omp task depend (iterator (j=0:i) , in : p[j]) depend (iterator (j=0:i) , inout : p[j + 2])
  48. v++;
  49. #pragma omp task depend (iterator (j=0:i) , inout : p[j]) depend (iterator (j=0:i) , mutexinoutset : p[j + 2])
  50. v++;
  51. #pragma omp task depend (iterator (j=0:i) , mutexinoutset : p[j]) depend (iterator (j=0:i) , out : p[j + 2])
  52. v++;
  53. }
  54. int
  55. main ()
  56. {
  57. int p[4];
  58. foo (p, 2);
  59. foo (p, -1);
  60. return 0;
  61. }