brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.7 KiB · 6dc6e77 Raw
399 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s -Wuninitialized2 3// RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 %s -Wuninitialized4 5 6struct S1; // expected-note 2 {{declared here}} // expected-note 2 {{forward declaration of 'S1'}}7extern S1 a;8class S2 {9  mutable int a;10public:11  S2():a(0) { }12  S2(S2 &s2):a(s2.a) { }13};14const S2 b;15const S2 ba[5];16class S3 {17  int a;18public:19  S3():a(0) { }20  S3(S3 &s3):a(s3.a) { }21};22const S3 c;23const S3 ca[5];24extern const int f;25class S4 {26  int a;27  S4();28  S4(const S4 &s4);29public:30  S4(int v):a(v) { }31};32class S5 {33  int a;34  S5():a(0) {}35  S5(const S5 &s5):a(s5.a) { }36public:37  S5(int v):a(v) { }38};39 40S3 h;41#pragma omp threadprivate(h) // expected-note 2 {{defined as threadprivate or thread local}}42 43namespace A {44double x;45#pragma omp threadprivate(x) // expected-note 2 {{defined as threadprivate or thread local}}46}47namespace B {48using A::x;49}50 51template <class T, typename S, int N>52T tmain(T argc, S **argv) {53  const int d = 5;54  const int da[5] = { 0 };55  S4 e(4);56  S5 g(5);57  int i, z;58  int &j = i;59  int acc = 0;60  int n = 1000;61  62#pragma omp target63#pragma omp teams64#pragma omp distribute parallel for simd shared // expected-error {{expected '(' after 'shared'}}65  for(int k = 0 ; k < n ; k++) {66    acc++;67  }68 69#pragma omp target70#pragma omp teams71#pragma omp distribute parallel for simd shared ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}72  for(int k = 0 ; k < n ; k++) {73    acc++;74  }75 76#pragma omp target77#pragma omp teams78#pragma omp distribute parallel for simd shared () // expected-error {{expected expression}}79  for(int k = 0 ; k < n ; k++) {80    acc++;81  }82 83#pragma omp target84#pragma omp teams85#pragma omp distribute parallel for simd shared (argc // expected-error {{expected ')'}} expected-note {{to match this '('}}86  for(int k = 0 ; k < n ; k++) {87    acc++;88  }89 90#pragma omp target91#pragma omp teams92#pragma omp distribute parallel for simd shared (argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}93  for(int k = 0 ; k < n ; k++) {94    acc++;95  }96 97#pragma omp target98#pragma omp teams99#pragma omp distribute parallel for simd shared (argc > 0 ? argv[1] : argv[2]) // expected-error {{expected variable name}}100  for(int k = 0 ; k < n ; k++) {101    acc++;102  }103 104#pragma omp target105#pragma omp teams106#pragma omp distribute parallel for simd shared (argc, z)107  for(int k = 0 ; k < n ; k++) {108    acc++;109  }110 111#pragma omp target112#pragma omp teams113#pragma omp distribute parallel for simd shared (S1) // expected-error {{'S1' does not refer to a value}}114  for(int k = 0 ; k < n ; k++) {115    acc++;116  }117 118#pragma omp target119#pragma omp teams120#pragma omp distribute parallel for simd shared (a, b, c, d, f) // expected-error {{incomplete type 'S1' where a complete type is required}} expected-warning {{type 'const S2' is not trivially copyable and not guaranteed to be mapped correctly}} expected-warning {{type 'const S3' is not trivially copyable and not guaranteed to be mapped correctly}}121  for(int k = 0 ; k < n ; k++) {122    acc++;123  }124 125#pragma omp target126#pragma omp teams127#pragma omp distribute parallel for simd shared (argv[1]) // expected-error {{expected variable name}}128  for(int k = 0 ; k < n ; k++) {129    acc++;130  }131 132#pragma omp target133#pragma omp teams134#pragma omp distribute parallel for simd shared(ba) // expected-warning {{type 'const S2[5]' is not trivially copyable and not guaranteed to be mapped correctly}}135  for(int k = 0 ; k < n ; k++) {136    acc++;137  }138 139#pragma omp target140#pragma omp teams141#pragma omp distribute parallel for simd shared(ca) // expected-warning {{type 'const S3[5]' is not trivially copyable and not guaranteed to be mapped correctly}}142  for(int k = 0 ; k < n ; k++) {143    acc++;144  }145 146#pragma omp target147#pragma omp teams148#pragma omp distribute parallel for simd shared(da)149  for(int k = 0 ; k < n ; k++) {150    acc++;151  }152 153#pragma omp target154#pragma omp teams155#pragma omp distribute parallel for simd shared(e, g) // expected-warning {{type 'S4' is not trivially copyable and not guaranteed to be mapped correctly}} expected-warning {{type 'S5' is not trivially copyable and not guaranteed to be mapped correctly}}156  for(int k = 0 ; k < n ; k++) {157    acc++;158  }159 160#pragma omp target161#pragma omp teams162#pragma omp distribute parallel for simd shared(h, B::x) // expected-error 2 {{threadprivate or thread local variable cannot be shared}}163  for(int k = 0 ; k < n ; k++) {164    acc++;165  }166 167#pragma omp target168#pragma omp teams169#pragma omp distribute parallel for simd private(i), shared(i) // expected-error {{private variable cannot be shared}} expected-note {{defined as private}}170  for(int k = 0 ; k < n ; k++) {171    acc++;172  }173 174#pragma omp target175#pragma omp teams176#pragma omp distribute parallel for simd firstprivate(i), shared(i) // expected-error {{firstprivate variable cannot be shared}} expected-note {{defined as firstprivate}}177  for(int k = 0 ; k < n ; k++) {178    acc++;179  }180 181#pragma omp target182#pragma omp teams183#pragma omp distribute parallel for simd private(i)184  for(int k = 0 ; k < n ; k++) {185    acc++;186  }187 188#pragma omp target189#pragma omp teams190#pragma omp distribute parallel for simd shared(i)191  for(int k = 0 ; k < n ; k++) {192    acc++;193  }194 195#pragma omp target196#pragma omp teams197#pragma omp distribute parallel for simd shared(j)198  for(int k = 0 ; k < n ; k++) {199    acc++;200  }201 202#pragma omp target203#pragma omp teams204#pragma omp distribute parallel for simd firstprivate(i)205  for(int k = 0 ; k < n ; k++) {206    acc++;207  }208 209#pragma omp target210#pragma omp teams211#pragma omp distribute parallel for simd shared(i)212  for(int k = 0 ; k < n ; k++) {213    acc++;214  }215 216#pragma omp target217#pragma omp teams218#pragma omp distribute parallel for simd shared(j)219  for(int k = 0 ; k < n ; k++) {220    acc++;221  }222return T();223}224 225 226int main(int argc, char **argv) {227  const int d = 5;228  const int da[5] = { 0 };229  S4 e(4);230  S5 g(5);231  int i, z;232  int &j = i;233  int acc = 0;234  int n = argc;235 236#pragma omp target237#pragma omp teams238#pragma omp distribute parallel for simd shared // expected-error {{expected '(' after 'shared'}}239  for(int k = 0 ; k < n ; k++) {240    acc++;241  }242 243#pragma omp target244#pragma omp teams245#pragma omp distribute parallel for simd shared ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}246  for(int k = 0 ; k < n ; k++) {247    acc++;248  }249 250#pragma omp target251#pragma omp teams252#pragma omp distribute parallel for simd shared () // expected-error {{expected expression}}253  for(int k = 0 ; k < n ; k++) {254    acc++;255  }256 257#pragma omp target258#pragma omp teams259#pragma omp distribute parallel for simd shared (argc // expected-error {{expected ')'}} expected-note {{to match this '('}}260  for(int k = 0 ; k < n ; k++) {261    acc++;262  }263 264#pragma omp target265#pragma omp teams266#pragma omp distribute parallel for simd shared (argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}267  for(int k = 0 ; k < n ; k++) {268    acc++;269  }270 271#pragma omp target272#pragma omp teams273#pragma omp distribute parallel for simd shared (argc > 0 ? argv[1] : argv[2]) // expected-error {{expected variable name}}274  for(int k = 0 ; k < n ; k++) {275    acc++;276  }277 278#pragma omp target279#pragma omp teams280#pragma omp distribute parallel for simd shared (argc, z)281  for(int k = 0 ; k < n ; k++) {282    acc++;283  }284 285#pragma omp target286#pragma omp teams287#pragma omp distribute parallel for simd shared (S1) // expected-error {{'S1' does not refer to a value}}288  for(int k = 0 ; k < n ; k++) {289    acc++;290  }291 292#pragma omp target293#pragma omp teams294#pragma omp distribute parallel for simd shared (a, b, c, d, f) // expected-error {{incomplete type 'S1' where a complete type is required}} expected-warning {{type 'const S2' is not trivially copyable and not guaranteed to be mapped correctly}} expected-warning {{type 'const S3' is not trivially copyable and not guaranteed to be mapped correctly}}295  for(int k = 0 ; k < n ; k++) {296    acc++;297  }298 299#pragma omp target300#pragma omp teams301#pragma omp distribute parallel for simd shared (argv[1]) // expected-error {{expected variable name}}302  for(int k = 0 ; k < n ; k++) {303    acc++;304  }305 306#pragma omp target307#pragma omp teams308#pragma omp distribute parallel for simd shared(ba) // expected-warning {{type 'const S2[5]' is not trivially copyable and not guaranteed to be mapped correctly}}309  for(int k = 0 ; k < n ; k++) {310    acc++;311  }312 313#pragma omp target314#pragma omp teams315#pragma omp distribute parallel for simd shared(ca) // expected-warning {{type 'const S3[5]' is not trivially copyable and not guaranteed to be mapped correctly}}316  for(int k = 0 ; k < n ; k++) {317    acc++;318  }319 320#pragma omp target321#pragma omp teams322#pragma omp distribute parallel for simd shared(da)323  for(int k = 0 ; k < n ; k++) {324    acc++;325  }326 327#pragma omp target328#pragma omp teams329#pragma omp distribute parallel for simd shared(e, g) // expected-warning {{type 'S4' is not trivially copyable and not guaranteed to be mapped correctly}} expected-warning {{type 'S5' is not trivially copyable and not guaranteed to be mapped correctly}}330  for(int k = 0 ; k < n ; k++) {331    acc++;332  }333 334#pragma omp target335#pragma omp teams336#pragma omp distribute parallel for simd shared(h, B::x) // expected-error 2 {{threadprivate or thread local variable cannot be shared}}337  for(int k = 0 ; k < n ; k++) {338    acc++;339  }340 341#pragma omp target342#pragma omp teams343#pragma omp distribute parallel for simd private(i), shared(i) // expected-error {{private variable cannot be shared}} expected-note {{defined as private}}344  for(int k = 0 ; k < n ; k++) {345    acc++;346  }347 348#pragma omp target349#pragma omp teams350#pragma omp distribute parallel for simd firstprivate(i), shared(i) // expected-error {{firstprivate variable cannot be shared}} expected-note {{defined as firstprivate}}351  for(int k = 0 ; k < n ; k++) {352    acc++;353  }354 355#pragma omp target356#pragma omp teams357#pragma omp distribute parallel for simd private(i)358  for(int k = 0 ; k < n ; k++) {359    acc++;360  }361 362#pragma omp target363#pragma omp teams364#pragma omp distribute parallel for simd shared(i)365  for(int k = 0 ; k < n ; k++) {366    acc++;367  }368 369#pragma omp target370#pragma omp teams371#pragma omp distribute parallel for simd shared(j)372  for(int k = 0 ; k < n ; k++) {373    acc++;374  }375 376#pragma omp target377#pragma omp teams378#pragma omp distribute parallel for simd firstprivate(i)379  for(int k = 0 ; k < n ; k++) {380    acc++;381  }382 383#pragma omp target384#pragma omp teams385#pragma omp distribute parallel for simd shared(i)386  for(int k = 0 ; k < n ; k++) {387    acc++;388  }389 390#pragma omp target391#pragma omp teams392#pragma omp distribute parallel for simd shared(j)393  for(int k = 0 ; k < n ; k++) {394    acc++;395  }396 397return tmain<int, char, 1000>(argc, argv); // expected-note {{in instantiation of function template specialization 'tmain<int, char, 1000>' requested here}}398}399