Clang Project

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