]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/OpenMP/teams_distribute_parallel_for_messages.cpp
Vendor import of clang trunk r290819:
[FreeBSD/FreeBSD.git] / test / OpenMP / teams_distribute_parallel_for_messages.cpp
1 // RUN: %clang_cc1 -verify -fopenmp -std=c++11 %s
2
3 void foo() {
4 }
5
6 static int pvt;
7 #pragma omp threadprivate(pvt)
8
9 #pragma omp teams distribute parallel for // expected-error {{unexpected OpenMP directive '#pragma omp teams distribute parallel for'}}
10
11 int main(int argc, char **argv) {
12 #pragma omp target
13 #pragma omp teams distribute parallel for { // expected-warning {{extra tokens at the end of '#pragma omp teams distribute parallel for' are ignored}}
14   for (int i = 0; i < argc; ++i)
15     foo();
16 #pragma omp target
17 #pragma omp teams distribute parallel for ( // expected-warning {{extra tokens at the end of '#pragma omp teams distribute parallel for' are ignored}}
18   for (int i = 0; i < argc; ++i)
19     foo();
20 #pragma omp target
21 #pragma omp teams distribute parallel for[ // expected-warning {{extra tokens at the end of '#pragma omp teams distribute parallel for' are ignored}}
22   for (int i = 0; i < argc; ++i)
23     foo();
24 #pragma omp target
25 #pragma omp teams distribute parallel for] // expected-warning {{extra tokens at the end of '#pragma omp teams distribute parallel for' are ignored}}
26   for (int i = 0; i < argc; ++i)
27     foo();
28 #pragma omp target
29 #pragma omp teams distribute parallel for) // expected-warning {{extra tokens at the end of '#pragma omp teams distribute parallel for' are ignored}}
30   for (int i = 0; i < argc; ++i)
31     foo();
32 #pragma omp target
33 #pragma omp teams distribute parallel for } // expected-warning {{extra tokens at the end of '#pragma omp teams distribute parallel for' are ignored}}
34   for (int i = 0; i < argc; ++i)
35     foo();
36 #pragma omp target
37 #pragma omp teams distribute parallel for
38   for (int i = 0; i < argc; ++i)
39     foo();
40 // expected-warning@+2 {{extra tokens at the end of '#pragma omp teams distribute parallel for' are ignored}}
41 #pragma omp target
42 #pragma omp teams distribute parallel for unknown()
43   for (int i = 0; i < argc; ++i)
44     foo();
45 L1:
46   for (int i = 0; i < argc; ++i)
47     foo();
48 #pragma omp target
49 #pragma omp teams distribute parallel for
50   for (int i = 0; i < argc; ++i)
51     foo();
52 #pragma omp target
53 #pragma omp teams distribute parallel for
54   for (int i = 0; i < argc; ++i) {
55     goto L1; // expected-error {{use of undeclared label 'L1'}}
56     argc++;
57   }
58
59   for (int i = 0; i < 10; ++i) {
60     switch (argc) {
61     case (0):
62 #pragma omp target
63 #pragma omp teams distribute parallel for
64       for (int i = 0; i < argc; ++i) {
65         foo();
66         break; // expected-error {{'break' statement cannot be used in OpenMP for loop}}
67         continue;
68       }
69     default:
70       break;
71     }
72   }
73 #pragma omp target
74 #pragma omp teams distribute parallel for default(none)
75   for (int i = 0; i < 10; ++i)
76     ++argc; // expected-error {{ariable 'argc' must have explicitly specified data sharing attributes}}
77
78   goto L2; // expected-error {{use of undeclared label 'L2'}}
79 #pragma omp target
80 #pragma omp teams distribute parallel for
81   for (int i = 0; i < argc; ++i)
82   L2:
83   foo();
84 #pragma omp target
85 #pragma omp teams distribute parallel for
86   for (int i = 0; i < argc; ++i) {
87     return 1; // expected-error {{cannot return from OpenMP region}}
88   }
89
90   [[]] // expected-error {{an attribute list cannot appear here}}
91 #pragma omp target
92 #pragma omp teams distribute parallel for
93       for (int n = 0; n < 100; ++n) {
94   }
95
96 #pragma omp target
97 #pragma omp teams distribute parallel for copyin(pvt) // expected-error {{unexpected OpenMP clause 'copyin' in directive '#pragma omp teams distribute parallel for'}}
98   for (int n = 0; n < 100; ++n) {}
99
100   return 0;
101 }
102
103 void test_ordered() {
104 #pragma omp target
105 #pragma omp teams distribute parallel for ordered // expected-error {{unexpected OpenMP clause 'ordered' in directive '#pragma omp teams distribute parallel for'}}
106   for (int i = 0; i < 16; ++i)
107     ;
108 }
109