brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.5 KiB · c2e2ef5 Raw
241 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp %s -Wuninitialized2 3// RUN: %clang_cc1 -verify -fopenmp-simd %s -Wuninitialized4 5extern int omp_default_mem_alloc;6void foo() {7}8 9bool foobool(int argc) {10  return argc;11}12 13struct S1; // expected-note 2 {{declared here}} expected-note 2 {{forward declaration of 'S1'}}14extern S1 a;15class S2 {16  mutable int a;17 18public:19  S2() : a(0) {}20};21const S2 b;22const S2 ba[5];23class S3 {24  int a;25 26public:27  S3() : a(0) {}28};29const S3 ca[5];30class S4 {31  int a;32  S4(); // expected-note {{implicitly declared private here}}33 34public:35  S4(int v) : a(v) {36#pragma omp for simd private(a) private(this->a)37    for (int k = 0; k < v; ++k)38      ++this->a;39  }40};41class S5 {42  int a;43  S5() : a(0) {} // expected-note {{implicitly declared private here}}44 45public:46  S5(int v) : a(v) {}47  S5 &operator=(S5 &s) {48#pragma omp for simd private(a) private(this->a) private(s.a) // expected-error {{expected variable name or data member of current class}}49    for (int k = 0; k < s.a; ++k)50      ++s.a;51    return *this;52  }53};54 55template <typename T>56class S6 {57public:58  T a;59 60  S6() : a(0) {}61  S6(T v) : a(v) {62#pragma omp for simd private(a) private(this->a)63    for (int k = 0; k < v; ++k)64      ++this->a;65  }66  S6 &operator=(S6 &s) {67#pragma omp for simd private(a) private(this->a) private(s.a) // expected-error {{expected variable name or data member of current class}}68    for (int k = 0; k < s.a; ++k)69      ++s.a;70    return *this;71  }72};73 74template <typename T>75class S7 : public T {76  T a;77  S7() : a(0) {}78 79public:80  S7(T v) : a(v) {81#pragma omp for simd private(a) private(this->a) private(T::a)82    for (int k = 0; k < a.a; ++k)83      ++this->a.a;84  }85  S7 &operator=(S7 &s) {86#pragma omp 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}}87    for (int k = 0; k < s.a.a; ++k)88      ++s.a.a;89    return *this;90  }91};92 93S3 h;94#pragma omp threadprivate(h) // expected-note 2 {{defined as threadprivate or thread local}}95 96template <class I, class C>97int foomain(I argc, C **argv) {98  I e(4);99  I g(5);100  int i;101  int &j = i;102#pragma omp for simd private // expected-error {{expected '(' after 'private'}}103  for (int k = 0; k < argc; ++k)104    ++k;105#pragma omp for simd private( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}106  for (int k = 0; k < argc; ++k)107    ++k;108#pragma omp for simd private() // expected-error {{expected expression}}109  for (int k = 0; k < argc; ++k)110    ++k;111#pragma omp for simd private(argc // expected-error {{expected ')'}} expected-note {{to match this '('}}112  for (int k = 0; k < argc; ++k)113    ++k;114#pragma omp for simd private(argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}115  for (int k = 0; k < argc; ++k)116    ++k;117#pragma omp for simd private(argc > 0 ? argv[1] : argv[2]) // expected-error {{expected variable name}}118  for (int k = 0; k < argc; ++k)119    ++k;120#pragma omp for simd private(argc) allocate , allocate(, allocate(omp_default , allocate(omp_default_mem_alloc, allocate(omp_default_mem_alloc:, allocate(omp_default_mem_alloc: argc, allocate(omp_default_mem_alloc: argv), allocate(argv) // expected-error {{expected '(' after 'allocate'}} expected-error 2 {{expected expression}} expected-error 2 {{expected ')'}} expected-error {{use of undeclared identifier 'omp_default'}} expected-note 2 {{to match this '('}}121  for (int k = 0; k < argc; ++k)122    ++k;123#pragma omp for simd private(S1) // expected-error {{'S1' does not refer to a value}}124  for (int k = 0; k < argc; ++k)125    ++k;126#pragma omp for simd private(a, b) // expected-error {{private variable with incomplete type 'S1'}}127  for (int k = 0; k < argc; ++k)128    ++k;129#pragma omp for simd private(argv[1]) // expected-error {{expected variable name}}130  for (int k = 0; k < argc; ++k)131    ++k;132#pragma omp for simd private(e, g)133  for (int k = 0; k < argc; ++k)134    ++k;135#pragma omp for simd private(h) // expected-error {{threadprivate or thread local variable cannot be private}}136  for (int k = 0; k < argc; ++k)137    ++k;138#pragma omp for simd shared(i) // expected-error {{unexpected OpenMP clause 'shared' in directive '#pragma omp for simd'}}139  for (int k = 0; k < argc; ++k)140    ++k;141#pragma omp parallel142  {143    int v = 0;144    int i;145#pragma omp for simd private(i)146    for (int k = 0; k < argc; ++k) {147      i = k;148      v += i;149    }150  }151#pragma omp parallel shared(i)152#pragma omp parallel private(i)153#pragma omp for simd private(j)154  for (int k = 0; k < argc; ++k)155    ++k;156#pragma omp for simd private(i)157  for (int k = 0; k < argc; ++k)158    ++k;159  return 0;160}161 162namespace A {163double x;164#pragma omp threadprivate(x) // expected-note {{defined as threadprivate or thread local}}165}166namespace B {167using A::x;168}169 170int main(int argc, char **argv) {171  S4 e(4);172  S5 g(5);173  S6<float> s6(0.0) , s6_0(1.0);174  S7<S6<float> > s7(0.0) , s7_0(1.0);175  int i;176  int &j = i;177#pragma omp for simd private // expected-error {{expected '(' after 'private'}}178  for (int k = 0; k < argc; ++k)179    ++k;180#pragma omp for simd private( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}181  for (int k = 0; k < argc; ++k)182    ++k;183#pragma omp for simd private() // expected-error {{expected expression}}184  for (int k = 0; k < argc; ++k)185    ++k;186#pragma omp for simd private(argc // expected-error {{expected ')'}} expected-note {{to match this '('}}187  for (int k = 0; k < argc; ++k)188    ++k;189#pragma omp for simd private(argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}190  for (int k = 0; k < argc; ++k)191    ++k;192#pragma omp for simd private(argc > 0 ? argv[1] : argv[2]) // expected-error {{expected variable name}}193  for (int k = 0; k < argc; ++k)194    ++k;195#pragma omp for simd private(argc)196  for (int k = 0; k < argc; ++k)197    ++k;198#pragma omp for simd private(S1) // expected-error {{'S1' does not refer to a value}}199  for (int k = 0; k < argc; ++k)200    ++k;201#pragma omp for simd private(a, b) // expected-error {{private variable with incomplete type 'S1'}}202  for (int k = 0; k < argc; ++k)203    ++k;204#pragma omp for simd private(argv[1]) // expected-error {{expected variable name}}205  for (int k = 0; k < argc; ++k)206    ++k;207#pragma omp for simd private(e, g) // expected-error {{calling a private constructor of class 'S4'}} expected-error {{calling a private constructor of class 'S5'}}208  for (int k = 0; k < argc; ++k)209    ++k;210#pragma omp for simd private(h, B::x) // expected-error 2 {{threadprivate or thread local variable cannot be private}}211  for (int k = 0; k < argc; ++k)212    ++k;213#pragma omp for simd shared(i) // expected-error {{unexpected OpenMP clause 'shared' in directive '#pragma omp for simd'}}214  for (int k = 0; k < argc; ++k)215    ++k;216#pragma omp parallel217  {218    int i;219#pragma omp for simd private(i)220    for (int k = 0; k < argc; ++k)221      ++k;222  }223#pragma omp parallel shared(i)224#pragma omp parallel private(i)225#pragma omp for simd private(j)226  for (int k = 0; k < argc; ++k)227    ++k;228#pragma omp for simd private(i)229  for (int k = 0; k < argc; ++k)230    ++k;231  static int m;232#pragma omp for simd private(m)233  for (int k = 0; k < argc; ++k)234    m = k + 2;235 236  s6 = s6_0; // expected-note {{in instantiation of member function 'S6<float>::operator=' requested here}}237  s7 = s7_0; // expected-note {{in instantiation of member function 'S7<S6<float>>::operator=' requested here}}238  return foomain(argc, argv); // expected-note {{in instantiation of function template specialization 'foomain<int, char>' requested here}}239}240 241