brintos

brintos / llvm-project-archived public Read only

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