187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// RUN: %clang_cc1 -verify -fopenmp %s
287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid foo() {
487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarbool foobool(int argc) {
787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return argc;
887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
1087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarstruct S1; // expected-note 2 {{declared here}} expected-note 2 {{forward declaration of 'S1'}}
1187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarextern S1 a;
1287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarclass S2 {
1387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  mutable int a;
1487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
1587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarpublic:
1687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  S2() : a(0) {}
1787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar};
1887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarconst S2 b;
1987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarconst S2 ba[5];
2087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarclass S3 {
2187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  int a;
2287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
2387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarpublic:
2487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  S3() : a(0) {}
2587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar};
2687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarconst S3 ca[5];
2787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarclass S4 {
2887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  int a;
2987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  S4(); // expected-note {{implicitly declared private here}}
3087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
3187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarpublic:
324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S4(int v) : a(v) {
334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp taskloop private(a) private(this->a)
344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    for (int k = 0; k < v; ++k)
354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar      ++this->a;
364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
3787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar};
3887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarclass S5 {
3987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  int a;
4087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  S5() : a(0) {} // expected-note {{implicitly declared private here}}
4187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
4287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarpublic:
4387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  S5(int v) : a(v) {}
444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S5 &operator=(S5 &s) {
454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp taskloop private(a) private(this->a) private(s.a) // expected-error {{expected variable name or data member of current class}}
464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    for (int k = 0; k < s.a; ++k)
474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar      ++s.a;
484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    return *this;
494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar};
514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainartemplate <typename T>
534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarclass S6 {
544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarpublic:
554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  T a;
564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S6() : a(0) {}
584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S6(T v) : a(v) {
594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp taskloop private(a) private(this->a)
604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    for (int k = 0; k < v; ++k)
614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar      ++this->a;
624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S6 &operator=(S6 &s) {
644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp taskloop private(a) private(this->a) private(s.a) // expected-error {{expected variable name or data member of current class}}
654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    for (int k = 0; k < s.a; ++k)
664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar      ++s.a;
674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    return *this;
684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar};
704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainartemplate <typename T>
724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarclass S7 : public T {
734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  T a;
744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S7() : a(0) {}
754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarpublic:
774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S7(T v) : a(v) {
784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp taskloop private(a) private(this->a) private(T::a)
794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    for (int k = 0; k < a.a; ++k)
804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar      ++this->a.a;
814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S7 &operator=(S7 &s) {
834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp taskloop private(a) private(this->a) private(s.a) private(s.T::a) // expected-error 2 {{expected variable name or data member of current class}}
844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    for (int k = 0; k < s.a.a; ++k)
854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar      ++s.a.a;
864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    return *this;
874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  }
8887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar};
8987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
9087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga NainarS3 h;
9187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp threadprivate(h) // expected-note 2 {{defined as threadprivate or thread local}}
9287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
9387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainartemplate <class I, class C>
9487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarint foomain(I argc, C **argv) {
9587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  I e(4);
9687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  I g(5);
9787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  int i;
9887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  int &j = i;
9987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private // expected-error {{expected '(' after 'private'}}
10087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
10187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
10287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
10387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
10487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
10587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private() // expected-error {{expected expression}}
10687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
10787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
10887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
10987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
11087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
11187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
11287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
11387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
11487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(argc > 0 ? argv[1] : argv[2]) // expected-error {{expected variable name}}
11587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
11687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
11787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(argc)
11887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
11987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
12087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(S1) // expected-error {{'S1' does not refer to a value}}
12187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
12287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
12387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(a, b) // expected-error {{private variable with incomplete type 'S1'}}
12487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
12587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
12687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(argv[1]) // expected-error {{expected variable name}}
12787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
12887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
12987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(e, g)
13087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
13187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
13287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(h) // expected-error {{threadprivate or thread local variable cannot be private}}
13387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
13487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
13587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop shared(i)
13687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
13787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
13887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp parallel
13987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  {
14087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    int v = 0;
14187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    int i;
14287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(i)
14387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    for (int k = 0; k < argc; ++k) {
14487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      i = k;
14587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      v += i;
14687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    }
14787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  }
14887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp parallel shared(i)
14987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp parallel private(i)
15087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(j)
15187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
15287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
15387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(i)
15487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
15587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
15687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return 0;
15787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
15887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
15987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid bar(S4 a[2]) {
16087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp parallel
16187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(a)
16287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int i = 0; i < 2; ++i)
16387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    foo();
16487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
16587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
16687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarnamespace A {
16787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainardouble x;
16887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp threadprivate(x) // expected-note {{defined as threadprivate or thread local}}
16987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
17087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarnamespace B {
17187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarusing A::x;
17287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
17387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
17487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarint main(int argc, char **argv) {
17587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  S4 e(4);
17687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  S5 g(5);
1774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S6<float> s6(0.0) , s6_0(1.0);
1784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  S7<S6<float> > s7(0.0) , s7_0(1.0);
17987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  int i;
18087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  int &j = i;
18187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private // expected-error {{expected '(' after 'private'}}
18287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
18387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
18487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
18587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
18687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
18787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private() // expected-error {{expected expression}}
18887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
18987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
19087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
19187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
19287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
19387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
19487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
19587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
19687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(argc > 0 ? argv[1] : argv[2]) // expected-error {{expected variable name}}
19787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
19887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
19987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(argc)
20087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
20187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
20287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(S1) // expected-error {{'S1' does not refer to a value}}
20387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
20487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
20587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(a, b) // expected-error {{private variable with incomplete type 'S1'}}
20687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
20787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
20887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(argv[1]) // expected-error {{expected variable name}}
20987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
21087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
21187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(e, g) // expected-error {{calling a private constructor of class 'S4'}} expected-error {{calling a private constructor of class 'S5'}}
21287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
21387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
21487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(h) // expected-error {{threadprivate or thread local variable cannot be private}}
21587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
21687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
21787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(B::x) // expected-error {{threadprivate or thread local variable cannot be private}}
21887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
21987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
22087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop shared(i)
22187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
22287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
22387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp parallel
22487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  {
22587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    int i;
22687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(i)
22787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    for (int k = 0; k < argc; ++k)
22887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      ++k;
22987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  }
23087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp parallel shared(i)
23187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp parallel private(i)
23287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(j)
23387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
23487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
23587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(i)
23687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for (int k = 0; k < argc; ++k)
23787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    ++k;
23887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  static int si;
23987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#pragma omp taskloop private(si) // OK
24087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  for(int k = 0; k < argc; ++k)
24187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    si = k + 1;
24287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
2434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  s6 = s6_0; // expected-note {{in instantiation of member function 'S6<float>::operator=' requested here}}
2444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  s7 = s7_0; // expected-note {{in instantiation of member function 'S7<S6<float> >::operator=' requested here}}
2454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar  return foomain(argc, argv); // expected-note {{in instantiation of function template specialization 'foomain<int, char>' requested here}}
24687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
24787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
248