1/* { dg-do compile } */ 2/* { dg-options "-fopenmp" } */ 3 4void 5f1 (void) 6{ 7 int i, j; 8 #pragma omp for 9 for (i = 0; i < 3; i++) 10 { 11 #pragma omp for /* { dg-error "may not be closely nested" } */ 12 for (j = 0; j < 3; j++) 13 ; 14 #pragma omp sections /* { dg-error "may not be closely nested" } */ 15 { 16 ; 17 #pragma omp section 18 ; 19 } 20 #pragma omp single /* { dg-error "may not be closely nested" } */ 21 ; 22 #pragma omp master /* { dg-error "may not be closely nested" } */ 23 ; 24 #pragma omp barrier /* { dg-error "may not be closely nested" } */ 25 } 26 #pragma omp sections 27 { 28 #pragma omp for /* { dg-error "may not be closely nested" } */ 29 for (j = 0; j < 3; j++) 30 ; 31 } 32 #pragma omp sections 33 { 34 #pragma omp sections /* { dg-error "may not be closely nested" } */ 35 { 36 ; 37 #pragma omp section 38 ; 39 } 40 } 41 #pragma omp sections 42 { 43 #pragma omp single /* { dg-error "may not be closely nested" } */ 44 ; 45 } 46 #pragma omp sections 47 { 48 #pragma omp master /* { dg-error "may not be closely nested" } */ 49 ; 50 } 51 #pragma omp sections 52 { 53 #pragma omp section 54 ; 55 } 56 #pragma omp sections 57 { 58 #pragma omp section 59 #pragma omp for /* { dg-error "may not be closely nested" } */ 60 for (j = 0; j < 3; j++) 61 ; 62 } 63 #pragma omp sections 64 { 65 #pragma omp section 66 #pragma omp sections /* { dg-error "may not be closely nested" } */ 67 { 68 ; 69 #pragma omp section 70 ; 71 } 72 } 73 #pragma omp sections 74 { 75 #pragma omp section 76 #pragma omp single /* { dg-error "may not be closely nested" } */ 77 ; 78 } 79 #pragma omp sections 80 { 81 #pragma omp section 82 #pragma omp master /* { dg-error "may not be closely nested" } */ 83 ; 84 } 85 #pragma omp single 86 { 87 #pragma omp for /* { dg-error "may not be closely nested" } */ 88 for (j = 0; j < 3; j++) 89 ; 90 #pragma omp sections /* { dg-error "may not be closely nested" } */ 91 { 92 ; 93 #pragma omp section 94 ; 95 } 96 #pragma omp single /* { dg-error "may not be closely nested" } */ 97 ; 98 #pragma omp master /* { dg-error "may not be closely nested" } */ 99 ; 100 #pragma omp barrier /* { dg-error "may not be closely nested" } */ 101 } 102 #pragma omp master 103 { 104 #pragma omp for /* { dg-error "may not be closely nested" } */ 105 for (j = 0; j < 3; j++) 106 ; 107 #pragma omp sections /* { dg-error "may not be closely nested" } */ 108 { 109 ; 110 #pragma omp section 111 ; 112 } 113 #pragma omp single /* { dg-error "may not be closely nested" } */ 114 ; 115 #pragma omp master 116 ; 117 #pragma omp barrier /* { dg-error "may not be closely nested" } */ 118 } 119 #pragma omp task 120 { 121 #pragma omp for /* { dg-error "may not be closely nested" } */ 122 for (j = 0; j < 3; j++) 123 ; 124 #pragma omp sections /* { dg-error "may not be closely nested" } */ 125 { 126 ; 127 #pragma omp section 128 ; 129 } 130 #pragma omp single /* { dg-error "may not be closely nested" } */ 131 ; 132 #pragma omp master /* { dg-error "may not be closely nested" } */ 133 ; 134 #pragma omp barrier /* { dg-error "may not be closely nested" } */ 135 } 136 #pragma omp parallel 137 { 138 #pragma omp for 139 for (j = 0; j < 3; j++) 140 ; 141 #pragma omp sections 142 { 143 ; 144 #pragma omp section 145 ; 146 } 147 #pragma omp single 148 ; 149 #pragma omp master 150 ; 151 #pragma omp barrier 152 } 153} 154 155void 156f2 (void) 157{ 158 int i, j; 159 #pragma omp ordered 160 { 161 #pragma omp for /* { dg-error "may not be closely nested" } */ 162 for (j = 0; j < 3; j++) 163 ; 164 #pragma omp sections /* { dg-error "may not be closely nested" } */ 165 { 166 ; 167 #pragma omp section 168 ; 169 } 170 #pragma omp single /* { dg-error "may not be closely nested" } */ 171 ; 172 #pragma omp master 173 ; 174 #pragma omp barrier /* { dg-error "may not be closely nested" } */ 175 } 176} 177 178void 179f3 (void) 180{ 181 #pragma omp critical 182 { 183 #pragma omp ordered /* { dg-error "may not be closely nested" } */ 184 ; 185 } 186} 187 188void 189f4 (void) 190{ 191 #pragma omp task 192 { 193 #pragma omp ordered /* { dg-error "may not be closely nested" } */ 194 ; 195 } 196} 197 198void 199f5 (void) 200{ 201 int i; 202 #pragma omp for 203 for (i = 0; i < 10; i++) 204 { 205 #pragma omp ordered /* { dg-error "must be closely nested" } */ 206 ; 207 } 208 #pragma omp for ordered 209 for (i = 0; i < 10; i++) 210 { 211 #pragma omp ordered 212 ; 213 } 214} 215 216void 217f6 (void) 218{ 219 #pragma omp critical (foo) 220 #pragma omp critical (bar) 221 ; 222 #pragma omp critical 223 #pragma omp critical (baz) 224 ; 225} 226 227void 228f7 (void) 229{ 230 #pragma omp critical (foo2) 231 #pragma omp critical 232 ; 233 #pragma omp critical (bar) 234 #pragma omp critical (bar) /* { dg-error "may not be nested" } */ 235 ; 236 #pragma omp critical 237 #pragma omp critical /* { dg-error "may not be nested" } */ 238 ; 239} 240