1 #ifdef __cplusplus 2 extern "C" { 3 #endif 4 int omp_get_thread_num (void); 5 #ifdef __cplusplus 6 } 7 #endif 8 9 void f1(int * a)10f1 (int *a) 11 { 12 int i; 13 #pragma omp loop /* { dg-error "'bind' clause not specified on a 'loop' construct not nested inside another OpenMP construct" } */ 14 for (i = 0; i < 64; i++) 15 a[i] = i; 16 } 17 18 void f2(int * a)19f2 (int *a) 20 { 21 int i, j; 22 #pragma omp parallel num_threads (4) 23 { 24 int j = omp_get_thread_num (); 25 #pragma omp loop private (i) bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */ 26 for (i = 0; i < 64; i++) 27 a[j * 64 + i] = i; 28 } 29 #pragma omp critical 30 { 31 #pragma omp loop lastprivate (i) bind(teams)/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */ 32 for (i = 0; i < 64; i++) 33 a[i] = i; 34 } 35 #pragma omp master 36 { 37 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */ 38 for (i = 0; i < 64; i++) 39 a[i] = i; 40 } 41 #pragma omp sections 42 { 43 #pragma omp loop bind(teams) lastprivate(i) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */ 44 for (i = 0; i < 64; i++) 45 a[i] = i; 46 } 47 #pragma omp single 48 { 49 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */ 50 for (i = 0; i < 64; i++) 51 a[i] = i; 52 } 53 #pragma omp task 54 { 55 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */ 56 for (i = 0; i < 64; i++) 57 a[i] = i; 58 } 59 #pragma omp taskgroup 60 { 61 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */ 62 for (i = 0; i < 64; i++) 63 a[i] = i; 64 } 65 #pragma omp teams 66 { 67 #pragma omp distribute 68 for (j = 0; j < 64; ++j) 69 { 70 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */ 71 for (i = 0; i < 64; i++) 72 a[64 * j + i] = i; 73 } 74 } 75 #pragma omp for 76 for (j = 0; j < 64; ++j) 77 { 78 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */ 79 for (i = 0; i < 64; i++) 80 a[64 * j + i] = i; 81 } 82 #pragma omp parallel 83 #pragma omp loop 84 for (j = 0; j < 64; ++j) 85 { 86 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */ 87 for (i = 0; i < 64; i++) 88 a[64 * j + i] = i; 89 } 90 #pragma omp loop bind(thread) 91 for (j = 0; j < 64; ++j) 92 { 93 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */ 94 for (i = 0; i < 64; i++) 95 a[64 * j + i] = i; 96 } 97 #pragma omp loop bind(parallel) 98 for (j = 0; j < 64; ++j) 99 { 100 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */ 101 for (i = 0; i < 64; i++) 102 a[64 * j + i] = i; 103 } 104 #pragma omp for ordered 105 for (j = 0; j < 64; ++j) 106 { 107 #pragma omp ordered threads 108 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */ 109 for (i = 0; i < 64; i++) 110 a[64 * j + i] = i; 111 } 112 #pragma omp simd 113 for (j = 0; j < 64; ++j) 114 { 115 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */ 116 for (i = 0; i < 64; i++) 117 a[64 * j + i] = i; 118 } 119 #pragma omp taskloop 120 for (j = 0; j < 64; ++j) 121 { 122 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */ 123 for (i = 0; i < 64; i++) 124 a[64 * j + i] = i; 125 } 126 #pragma omp target 127 { 128 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */ 129 for (i = 0; i < 64; i++) 130 a[i] = i; 131 } 132 } 133 134 void f3(int * a)135f3 (int *a) 136 { 137 int i, j; 138 #pragma omp simd 139 for (j = 0; j < 64; j++) 140 { 141 #pragma omp loop bind(parallel) /* { dg-error "'bind\\(parallel\\)' on a 'loop' construct nested inside 'simd' construct" } */ 142 for (i = 0; i < 64; i++) 143 a[64 * j + i] = i; 144 } 145 } 146