14967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s
24967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
34967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
44967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct S1; // expected-note 2 {{declared here}}
54967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarextern S1 a;
64967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarclass S2 {
74967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  mutable int a;
84967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarpublic:
94967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S2():a(0) { }
104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S2(S2 &s2):a(s2.a) { }
114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar};
124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarconst S2 b;
134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarconst S2 ba[5];
144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarclass S3 {
154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int a;
164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarpublic:
174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S3():a(0) { }
184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S3(S3 &s3):a(s3.a) { }
194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar};
204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarconst S3 c;
214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarconst S3 ca[5];
224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarextern const int f;
234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarclass S4 {
244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int a;
254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S4();
264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S4(const S4 &s4);
274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarpublic:
284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S4(int v):a(v) { }
294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar};
304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarclass S5 {
314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int a;
324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S5():a(0) {}
334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S5(const S5 &s5):a(s5.a) { }
344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarpublic:
354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S5(int v):a(v) { }
364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar};
374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
384967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarS3 h;
394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp threadprivate(h) // expected-note 2 {{defined as threadprivate or thread local}}
404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarnamespace A {
424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainardouble x;
434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp threadprivate(x) // expected-note 2 {{defined as threadprivate or thread local}}
444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}
454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarnamespace B {
464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarusing A::x;
474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}
484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainartemplate <class T, typename S, int N>
504967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarT tmain(T argc, S **argv) {
514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  const int d = 5;
524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  const int da[5] = { 0 };
534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S4 e(4);
544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S5 g(5);
554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int i;
564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int &j = i;
574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int acc = 0;
584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int n = 1000;
594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared // expected-error {{expected '(' after 'shared'}}
634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared () // expected-error {{expected expression}}
774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared (argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared (argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared (argc > 0 ? argv[1] : argv[2]) // expected-error {{expected variable name}}
984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
1004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
1024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared (argc)
1054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
1064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
1074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
1094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared (S1) // expected-error {{'S1' does not refer to a value}}
1124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
1134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
1144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
1164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared (a, b, c, d, f)
1194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
1204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
1214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
1234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared (argv[1]) // expected-error {{expected variable name}}
1264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
1274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
1284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
1304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(ba)
1334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
1344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
1354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
1374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(ca)
1404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
1414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
1424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
1444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(da)
1474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
1484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
1494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
1514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(e, g)
1544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
1554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
1564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
1584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(h, B::x) // expected-error 2 {{threadprivate or thread local variable cannot be shared}}
1614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
1624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
1634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
1654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(i), shared(i) // expected-error {{private variable cannot be shared}} expected-note {{defined as private}}
1684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
1694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
1704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
1724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd firstprivate(i), shared(i) // expected-error {{firstprivate variable cannot be shared}} expected-note {{defined as firstprivate}}
1754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
1764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
1774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
1794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(i)
1824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
1834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
1844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
1864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(i)
1894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
1904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
1914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
1934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
1944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
1954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(j)
1964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
1974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
1984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
1994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd firstprivate(i)
2034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
2044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
2054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
2064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(i)
2104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
2114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
2124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
2134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(j)
2174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
2184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
2194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
2204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarreturn T();
2214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}
2224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarint main(int argc, char **argv) {
2254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  const int d = 5;
2264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  const int da[5] = { 0 };
2274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S4 e(4);
2284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S5 g(5);
2294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int i;
2304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int &j = i;
2314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int acc = 0;
2324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  int n = argc;
2334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared // expected-error {{expected '(' after 'shared'}}
2374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
2384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
2394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
2404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
2444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
2454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
2464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
2474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared () // expected-error {{expected expression}}
2514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
2524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
2534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
2544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared (argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
2584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
2594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
2604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
2614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared (argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
2654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
2664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
2674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
2684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared (argc > 0 ? argv[1] : argv[2]) // expected-error {{expected variable name}}
2724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
2734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
2744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
2754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared (argc)
2794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
2804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
2814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
2824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared (S1) // expected-error {{'S1' does not refer to a value}}
2864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
2874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
2884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
2894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared (a, b, c, d, f)
2934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
2944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
2954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
2964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
2974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
2984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
2994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared (argv[1]) // expected-error {{expected variable name}}
3004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
3014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
3024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
3034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
3044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
3054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
3064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(ba)
3074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
3084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
3094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
3104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
3114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
3124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
3134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(ca)
3144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
3154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
3164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
3174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
3184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
3194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
3204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(da)
3214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
3224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
3234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
3244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
3254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
3264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
3274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(e, g)
3284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
3294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
3304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
3314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
3324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
3334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
3344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(h, B::x) // expected-error 2 {{threadprivate or thread local variable cannot be shared}}
3354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
3364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
3374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
3384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
3394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
3404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
3414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(i), shared(i) // expected-error {{private variable cannot be shared}} expected-note {{defined as private}}
3424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
3434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
3444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
3454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
3464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
3474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
3484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd firstprivate(i), shared(i) // expected-error {{firstprivate variable cannot be shared}} expected-note {{defined as firstprivate}}
3494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
3504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
3514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
3524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
3534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
3544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
3554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd private(i)
3564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
3574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
3584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
3594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
3604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
3614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
3624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(i)
3634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
3644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
3654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
3664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
3674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
3684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
3694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(j)
3704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
3714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
3724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
3734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
3744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
3754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
3764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd firstprivate(i)
3774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
3784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
3794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
3804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
3814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
3824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
3834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(i)
3844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
3854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
3864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
3874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
3884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target
3894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp teams
3904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp distribute parallel for simd shared(j)
3914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  for(int k = 0 ; k < n ; k++) {
3924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    acc++;
3934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
3944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
3954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarreturn tmain<int, char, 1000>(argc, argv); // expected-note {{in instantiation of function template specialization 'tmain<int, char, 1000>' requested here}}
3964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}
397