blob: 08df9e0666e476156c49d70ef533c18fb37ae94f [file] [log] [blame]
Stephen Hines176edba2014-12-01 14:53:08 -08001// RUN: %clang_cc1 -verify -fopenmp=libiomp5 %s
2
3int foo();
4
5int main() {
6 #pragma omp critical
7 ;
8 #pragma omp critical untied // expected-error {{unexpected OpenMP clause 'untied' in directive '#pragma omp critical'}}
9 #pragma omp critical unknown // expected-warning {{extra tokens at the end of '#pragma omp critical' are ignored}}
10 #pragma omp critical ( // expected-error {{expected identifier}} expected-error {{expected ')'}} expected-note {{to match this '('}}
11 #pragma omp critical ( + // expected-error {{expected identifier}} expected-error {{expected ')'}} expected-note {{to match this '('}}
12 #pragma omp critical (name // expected-error {{expected ')'}} expected-note {{to match this '('}}
13 #pragma omp critical (name1)
14 foo();
15 {
16 #pragma omp critical
17 } // expected-error {{expected statement}}
18 #pragma omp critical (name) // expected-note {{previous 'critical' region starts here}}
19 #pragma omp critical
20 for (int i = 0; i < 10; ++i) {
21 foo();
22 #pragma omp parallel
23 #pragma omp for
24 for (int j = 0; j < 10; j++) {
25 foo();
26 #pragma omp critical(name) // expected-error {{cannot nest 'critical' regions having the same name 'name'}}
27 foo();
28 }
29 }
30 #pragma omp critical (name)
31 #pragma omp critical
32 for (int i = 0; i < 10; ++i) {
33 foo();
34 #pragma omp parallel
35 #pragma omp for
36 for (int j = 0; j < 10; j++) {
37 #pragma omp critical
38 foo();
39 }
40 }
41 #pragma omp critical (name)
42 #pragma omp critical
43 for (int i = 0; i < 10; ++i) {
44 foo();
45 #pragma omp parallel
46 #pragma omp for
47 for (int j = 0; j < 10; j++) {
48 #pragma omp critical (nam)
49 foo();
50 }
51 }
52
53 return 0;
54}
55
56int foo() {
57 L1:
58 foo();
59 #pragma omp critical
60 {
61 foo();
62 goto L1; // expected-error {{use of undeclared label 'L1'}}
63 }
64 goto L2; // expected-error {{use of undeclared label 'L2'}}
65 #pragma omp critical
66 {
67 L2:
68 foo();
69 }
70
71 return 0;
72}