blob: d20fefd7e37fa413f559659854988827b15f53d2 [file] [log] [blame]
Richard Smith12a41bd2013-09-16 21:17:44 +00001// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 -std=c++11 -o - %s
Alexey Bataev758e55e2013-09-06 18:03:48 +00002
3void foo() {
4}
5
6#pragma omp parallel // expected-error {{unexpected OpenMP directive '#pragma omp parallel'}}
7
8int main(int argc, char **argv) {
Alp Tokerb14a4702013-12-18 19:10:54 +00009 #pragma omp parallel { // expected-warning {{extra tokens at the end of '#pragma omp parallel' are ignored}}
10 foo();
11 #pragma omp parallel ( // expected-warning {{extra tokens at the end of '#pragma omp parallel' are ignored}}
12 foo();
13 #pragma omp parallel [ // expected-warning {{extra tokens at the end of '#pragma omp parallel' are ignored}}
14 foo();
15 #pragma omp parallel ] // expected-warning {{extra tokens at the end of '#pragma omp parallel' are ignored}}
16 foo();
17 #pragma omp parallel ) // expected-warning {{extra tokens at the end of '#pragma omp parallel' are ignored}}
18 foo();
19 #pragma omp parallel } // expected-warning {{extra tokens at the end of '#pragma omp parallel' are ignored}}
20 foo();
Alexey Bataev758e55e2013-09-06 18:03:48 +000021 #pragma omp parallel
22 #pragma omp parallel unknown() // expected-warning {{extra tokens at the end of '#pragma omp parallel' are ignored}}
23 foo();
24 L1:
25 foo();
26 #pragma omp parallel
27 ;
28 #pragma omp parallel
29 {
30 goto L1; // expected-error {{use of undeclared label 'L1'}}
31 argc++;
32 }
33
34 for (int i = 0; i < 10; ++i) {
35 switch(argc) {
36 case (0):
37 #pragma omp parallel
38 {
39 foo();
40 break; // expected-error {{'break' statement not in loop or switch statement}}
41 continue; // expected-error {{'continue' statement not in loop statement}}
42 }
43 default:
44 break;
45 }
46 }
47 #pragma omp parallel default(none)
48 ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}}
49
50 goto L2; // expected-error {{use of undeclared label 'L2'}}
51 #pragma omp parallel
52 L2:
53 foo();
54 #pragma omp parallel
55 {
56 return 1; // expected-error {{cannot return from OpenMP region}}
57 }
58
Richard Smith12a41bd2013-09-16 21:17:44 +000059 [[]] // expected-error {{an attribute list cannot appear here}}
60 #pragma omp parallel
61 for (int n = 0; n < 100; ++n) {}
62
Alexey Bataev758e55e2013-09-06 18:03:48 +000063 return 0;
64}
65