14967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: %clang_cc1 -verify -fopenmp %s
24967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
34967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarvoid foo() {
44967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}
54967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
64967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarbool foobool(int argc) {
74967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  return argc;
84967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}
94967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct S1; // expected-note 2 {{declared here}} expected-note 2 {{forward declaration of 'S1'}}
114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarextern S1 a;
124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarclass S2 {
134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  mutable int a;
144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarpublic:
164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S2() : a(0) {}
174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar};
184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarconst S2 b;
194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarconst S2 ba[5];
204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarclass S3 {
214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int a;
224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarpublic:
244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S3() : a(0) {}
254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar};
264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarconst S3 ca[5];
274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarclass S4 {
284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int a;
294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S4(); // expected-note {{implicitly declared private here}}
304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarpublic:
324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S4(int v) : a(v) {
334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(a) private(this->a)
364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    for (int k = 0; k < v; ++k)
374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar      ++this->a;
384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar};
404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarclass S5 {
414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int a;
424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S5() : a(0) {} // expected-note {{implicitly declared private here}}
434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarpublic:
454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S5(int v) : a(v) {}
464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S5 &operator=(S5 &s) {
474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(a) private(this->a) private(s.a) // expected-error {{expected variable name or data member of current class}}
504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    for (int k = 0; k < s.a; ++k)
514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar      ++s.a;
524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    return *this;
534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar};
554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainartemplate <typename T>
574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarclass S6 {
584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarpublic:
594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  T a;
604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S6() : a(0) {}
624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S6(T v) : a(v) {
634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(a) private(this->a)
664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    for (int k = 0; k < v; ++k)
674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar      ++this->a;
684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S6 &operator=(S6 &s) {
704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(a) private(this->a) private(s.a) // expected-error {{expected variable name or data member of current class}}
734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    for (int k = 0; k < s.a; ++k)
744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar      ++s.a;
754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    return *this;
764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar};
784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainartemplate <typename T>
804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarclass S7 : public T {
814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  T a;
824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S7() : a(0) {}
834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarpublic:
854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S7(T v) : a(v) {
864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(a) private(this->a) private(T::a)
894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    for (int k = 0; k < a.a; ++k)
904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar      ++this->a.a;
914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S7 &operator=(S7 &s) {
934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(a) private(this->a) private(s.a) private(s.T::a) // expected-error 2 {{expected variable name or data member of current class}}
964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    for (int k = 0; k < s.a.a; ++k)
974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar      ++s.a.a;
984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    return *this;
994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar};
1014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
1024967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarS3 h;
1034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp threadprivate(h) // expected-note 2 {{defined as threadprivate or thread local}}
1044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
1054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainartemplate <class I, class C>
1064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarint foomain(I argc, C **argv) {
1074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  I e(4);
1084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  I g(5);
1094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int i;
1104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int &j = i;
1114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private // expected-error {{expected '(' after 'private'}}
1144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
1154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
1164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
1194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
1204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
1214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private() // expected-error {{expected expression}}
1244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
1254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
1264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
1294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
1304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
1314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
1344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
1354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
1364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(argc > 0 ? argv[1] : argv[2]) // expected-error {{expected variable name}}
1394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
1404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
1414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(argc)
1444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
1454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
1464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(S1) // expected-error {{'S1' does not refer to a value}}
1494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
1504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
1514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(a, b) // expected-error {{private variable with incomplete type 'S1'}}
1544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
1554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
1564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(argv[1]) // expected-error {{expected variable name}}
1594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
1604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
1614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(e, g)
1644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
1654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
1664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(h) // expected-error {{threadprivate or thread local variable cannot be private}}
1694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
1704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
1714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd nowait // expected-error {{unexpected OpenMP clause 'nowait' in directive '#pragma omp distribute parallel for simd'}}
1744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
1754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
1764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp parallel
1774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  {
1784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    int v = 0;
1794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    int i;
1804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(i)
1834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    for (int k = 0; k < argc; ++k) {
1844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar      i = k;
1854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar      v += i;
1864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    }
1874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp parallel shared(i)
1894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp parallel private(i)
1904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(j)
1934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
1944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
1954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(i)
1984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
1994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
2004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  return 0;
2014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}
2024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarnamespace A {
2044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainardouble x;
2054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp threadprivate(x) // expected-note {{defined as threadprivate or thread local}}
2064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}
2074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarnamespace B {
2084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarusing A::x;
2094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}
2104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarint main(int argc, char **argv) {
2124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S4 e(4);
2134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S5 g(5);
2144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S6<float> s6(0.0) , s6_0(1.0);
2154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S7<S6<float> > s7(0.0) , s7_0(1.0);
2164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int i;
2174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int &j = i;
2184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private // expected-error {{expected '(' after 'private'}}
2214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
2224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
2234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
2264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
2274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
2284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private() // expected-error {{expected expression}}
2314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
2324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
2334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
2364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
2374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
2384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
2414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
2424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
2434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(argc > 0 ? argv[1] : argv[2]) // expected-error {{expected variable name}}
2464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
2474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
2484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(argc)
2514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
2524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
2534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(S1) // expected-error {{'S1' does not refer to a value}}
2564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
2574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
2584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(a, b) // expected-error {{private variable with incomplete type 'S1'}}
2614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
2624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
2634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(argv[1]) // expected-error {{expected variable name}}
2664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
2674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
2684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(e, g) // expected-error {{calling a private constructor of class 'S4'}} expected-error {{calling a private constructor of class 'S5'}}
2714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
2724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
2734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(h, B::x) // expected-error 2 {{threadprivate or thread local variable cannot be private}}
2764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
2774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
2784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd nowait // expected-error {{unexpected OpenMP clause 'nowait' in directive '#pragma omp distribute parallel for simd'}}
2814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
2824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
2834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp parallel
2844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  {
2854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    int i;
2864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(i)
2894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    for (int k = 0; k < argc; ++k)
2904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar      ++k;
2914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
2924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp parallel shared(i)
2934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp parallel private(i)
2944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(j)
2974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
2984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
2994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
3004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
3014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(i)
3024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
3034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    ++k;
3044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  static int m;
3054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
3064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
3074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(m)
3084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
3094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    m = k + 2;
3104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
3114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  s6 = s6_0; // expected-note {{in instantiation of member function 'S6<float>::operator=' requested here}}
3124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  s7 = s7_0; // expected-note {{in instantiation of member function 'S7<S6<float> >::operator=' requested here}}
3134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  return foomain(argc, argv); // expected-note {{in instantiation of function template specialization 'foomain<int, char>' requested here}}
3144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}
3154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
316