brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.3 KiB · e2ff110 Raw
383 lines · c
1// RUN: %clang_cc1 -fsyntax-only -fopenmp -triple x86_64-unknown-unknown -verify %s -Wuninitialized2 3// RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -triple x86_64-unknown-unknown -verify %s -Wuninitialized4 5void xxx(int argc) {6  int x; // expected-note {{initialize the variable 'x' to silence this warning}}7#pragma omp taskloop8  for (int i = 0; i < 10; ++i)9    argc = x; // expected-warning {{variable 'x' is uninitialized when used here}}10}11 12// expected-error@+1 {{unexpected OpenMP directive '#pragma omp taskloop'}}13#pragma omp taskloop14 15// expected-error@+1 {{unexpected OpenMP directive '#pragma omp taskloop'}}16#pragma omp taskloop foo17 18void test_no_clause(void) {19  int i;20#pragma omp taskloop21  for (i = 0; i < 16; ++i)22    ;23 24// expected-error@+2 {{statement after '#pragma omp taskloop' must be a for loop}}25#pragma omp taskloop26  ++i;27}28 29void test_branch_protected_scope(void) {30  int i = 0;31L1:32  ++i;33 34  int x[24];35 36#pragma omp parallel37#pragma omp taskloop38  for (i = 0; i < 16; ++i) {39    if (i == 5)40      goto L1; // expected-error {{use of undeclared label 'L1'}}41    else if (i == 6)42      return; // expected-error {{cannot return from OpenMP region}}43    else if (i == 7)44      goto L2;45    else if (i == 8) {46    L2:47      x[i]++;48    }49  }50 51  if (x[0] == 0)52    goto L2; // expected-error {{use of undeclared label 'L2'}}53  else if (x[1] == 1)54    goto L1;55}56 57void test_invalid_clause(void) {58  int i;59#pragma omp parallel60// expected-warning@+1 {{extra tokens at the end of '#pragma omp taskloop' are ignored}}61#pragma omp taskloop foo bar62  for (i = 0; i < 16; ++i)63    ;64// expected-error@+1 {{directive '#pragma omp taskloop' cannot contain more than one 'nogroup' clause}}65#pragma omp taskloop nogroup nogroup66  for (i = 0; i < 16; ++i)67    ;68}69 70void test_non_identifiers(void) {71  int i, x;72 73#pragma omp parallel74// expected-warning@+1 {{extra tokens at the end of '#pragma omp taskloop' are ignored}}75#pragma omp taskloop;76  for (i = 0; i < 16; ++i)77    ;78// expected-warning@+3 {{extra tokens at the end of '#pragma omp taskloop' are ignored}}79// expected-error@+2 {{unexpected OpenMP clause 'linear' in directive '#pragma omp taskloop'}}80#pragma omp parallel81#pragma omp taskloop linear(x);82  for (i = 0; i < 16; ++i)83    ;84 85#pragma omp parallel86// expected-warning@+1 {{extra tokens at the end of '#pragma omp taskloop' are ignored}}87#pragma omp taskloop private(x);88  for (i = 0; i < 16; ++i)89    ;90 91#pragma omp parallel92// expected-warning@+1 {{extra tokens at the end of '#pragma omp taskloop' are ignored}}93#pragma omp taskloop, private(x);94  for (i = 0; i < 16; ++i)95    ;96}97 98extern int foo(void);99 100void test_collapse(void) {101  int i;102#pragma omp parallel103// expected-error@+1 {{expected '('}}104#pragma omp taskloop collapse105  for (i = 0; i < 16; ++i)106    ;107#pragma omp parallel108// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}109#pragma omp taskloop collapse(110  for (i = 0; i < 16; ++i)111    ;112#pragma omp parallel113// expected-error@+1 {{expected expression}}114#pragma omp taskloop collapse()115  for (i = 0; i < 16; ++i)116    ;117#pragma omp parallel118// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}119#pragma omp taskloop collapse(,120  for (i = 0; i < 16; ++i)121    ;122#pragma omp parallel123// expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}124#pragma omp taskloop collapse(, )125  for (i = 0; i < 16; ++i)126    ;127#pragma omp parallel128// expected-warning@+2 {{extra tokens at the end of '#pragma omp taskloop' are ignored}}129// expected-error@+1 {{expected '('}}130#pragma omp taskloop collapse 4)131  for (i = 0; i < 16; ++i)132    ;133#pragma omp parallel134// expected-error@+2 {{expected ')'}}135// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}136#pragma omp taskloop collapse(4137  for (i = 0; i < 16; ++i)138    ; // expected-error {{expected 4 for loops after '#pragma omp taskloop', but found only 1}}139#pragma omp parallel140// expected-error@+2 {{expected ')'}}141// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}142#pragma omp taskloop collapse(4,143  for (i = 0; i < 16; ++i)144    ; // expected-error {{expected 4 for loops after '#pragma omp taskloop', but found only 1}}145#pragma omp parallel146// expected-error@+2 {{expected ')'}}147// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}148#pragma omp taskloop collapse(4, )149  for (i = 0; i < 16; ++i)150    ; // expected-error {{expected 4 for loops after '#pragma omp taskloop', but found only 1}}151#pragma omp parallel152// expected-note@+1 {{as specified in 'collapse' clause}}153#pragma omp taskloop collapse(4)154  for (i = 0; i < 16; ++i)155    ; // expected-error {{expected 4 for loops after '#pragma omp taskloop', but found only 1}}156#pragma omp parallel157// expected-error@+2 {{expected ')'}}158// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}159#pragma omp taskloop collapse(4 4)160  for (i = 0; i < 16; ++i)161    ; // expected-error {{expected 4 for loops after '#pragma omp taskloop', but found only 1}}162#pragma omp parallel163// expected-error@+2 {{expected ')'}}164// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}165#pragma omp taskloop collapse(4, , 4)166  for (i = 0; i < 16; ++i)167    ; // expected-error {{expected 4 for loops after '#pragma omp taskloop', but found only 1}}168#pragma omp parallel169#pragma omp taskloop collapse(4)170  for (int i1 = 0; i1 < 16; ++i1)171    for (int i2 = 0; i2 < 16; ++i2)172      for (int i3 = 0; i3 < 16; ++i3)173        for (int i4 = 0; i4 < 16; ++i4)174          foo();175#pragma omp parallel176// expected-error@+2 {{expected ')'}}177// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}178#pragma omp taskloop collapse(4, 8)179  for (i = 0; i < 16; ++i)180    ; // expected-error {{expected 4 for loops after '#pragma omp taskloop', but found only 1}}181#pragma omp parallel182// expected-error@+1 {{integer constant expression}}183#pragma omp taskloop collapse(2.5)184  for (i = 0; i < 16; ++i)185    ;186#pragma omp parallel187// expected-error@+1 {{integer constant expression}}188#pragma omp taskloop collapse(foo())189  for (i = 0; i < 16; ++i)190    ;191#pragma omp parallel192// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}193#pragma omp taskloop collapse(-5)194  for (i = 0; i < 16; ++i)195    ;196#pragma omp parallel197// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}198#pragma omp taskloop collapse(0)199  for (i = 0; i < 16; ++i)200    ;201#pragma omp parallel202// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}203#pragma omp taskloop collapse(5 - 5)204  for (i = 0; i < 16; ++i)205    ;206}207 208void test_private(void) {209  int i;210#pragma omp parallel211// expected-error@+2 {{expected expression}}212// expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}213#pragma omp taskloop private(214  for (i = 0; i < 16; ++i)215    ;216#pragma omp parallel217// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}218// expected-error@+1 2 {{expected expression}}219#pragma omp taskloop private(,220  for (i = 0; i < 16; ++i)221    ;222#pragma omp parallel223// expected-error@+1 2 {{expected expression}}224#pragma omp taskloop private(, )225  for (i = 0; i < 16; ++i)226    ;227#pragma omp parallel228// expected-error@+1 {{expected expression}}229#pragma omp taskloop private()230  for (i = 0; i < 16; ++i)231    ;232#pragma omp parallel233// expected-error@+1 {{expected expression}}234#pragma omp taskloop private(int)235  for (i = 0; i < 16; ++i)236    ;237#pragma omp parallel238// expected-error@+1 {{expected variable name}}239#pragma omp taskloop private(0)240  for (i = 0; i < 16; ++i)241    ;242 243  int x, y, z;244#pragma omp parallel245#pragma omp taskloop private(x)246  for (i = 0; i < 16; ++i)247    ;248#pragma omp parallel249#pragma omp taskloop private(x, y)250  for (i = 0; i < 16; ++i)251    ;252#pragma omp parallel253#pragma omp taskloop private(x, y, z)254  for (i = 0; i < 16; ++i) {255    x = y * i + z;256  }257}258 259void test_lastprivate(void) {260  int i;261#pragma omp parallel262// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}263// expected-error@+1 {{expected expression}}264#pragma omp taskloop lastprivate(265  for (i = 0; i < 16; ++i)266    ;267 268#pragma omp parallel269// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}270// expected-error@+1 2 {{expected expression}}271#pragma omp taskloop lastprivate(,272  for (i = 0; i < 16; ++i)273    ;274#pragma omp parallel275// expected-error@+1 2 {{expected expression}}276#pragma omp taskloop lastprivate(, )277  for (i = 0; i < 16; ++i)278    ;279#pragma omp parallel280// expected-error@+1 {{expected expression}}281#pragma omp taskloop lastprivate()282  for (i = 0; i < 16; ++i)283    ;284#pragma omp parallel285// expected-error@+1 {{expected expression}}286#pragma omp taskloop lastprivate(int)287  for (i = 0; i < 16; ++i)288    ;289#pragma omp parallel290// expected-error@+1 {{expected variable name}}291#pragma omp taskloop lastprivate(0)292  for (i = 0; i < 16; ++i)293    ;294 295  int x, y, z;296#pragma omp parallel297#pragma omp taskloop lastprivate(x)298  for (i = 0; i < 16; ++i)299    ;300#pragma omp parallel301#pragma omp taskloop lastprivate(x, y)302  for (i = 0; i < 16; ++i)303    ;304#pragma omp parallel305#pragma omp taskloop lastprivate(x, y, z)306  for (i = 0; i < 16; ++i)307    ;308}309 310void test_firstprivate(void) {311  int i;312#pragma omp parallel313// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}314// expected-error@+1 {{expected expression}}315#pragma omp taskloop firstprivate(316  for (i = 0; i < 16; ++i)317    ;318 319#pragma omp parallel320// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}321// expected-error@+1 2 {{expected expression}}322#pragma omp taskloop firstprivate(,323  for (i = 0; i < 16; ++i)324    ;325#pragma omp parallel326// expected-error@+1 2 {{expected expression}}327#pragma omp taskloop firstprivate(, )328  for (i = 0; i < 16; ++i)329    ;330#pragma omp parallel331// expected-error@+1 {{expected expression}}332#pragma omp taskloop firstprivate()333  for (i = 0; i < 16; ++i)334    ;335#pragma omp parallel336// expected-error@+1 {{expected expression}}337#pragma omp taskloop firstprivate(int)338  for (i = 0; i < 16; ++i)339    ;340#pragma omp parallel341// expected-error@+1 {{expected variable name}}342#pragma omp taskloop firstprivate(0)343  for (i = 0; i < 16; ++i)344    ;345 346  int x, y, z;347#pragma omp parallel348#pragma omp taskloop lastprivate(x) firstprivate(x)349  for (i = 0; i < 16; ++i)350    ;351#pragma omp parallel352#pragma omp taskloop lastprivate(x, y) firstprivate(x, y)353  for (i = 0; i < 16; ++i)354    ;355#pragma omp parallel356#pragma omp taskloop lastprivate(x, y, z) firstprivate(x, y, z)357  for (i = 0; i < 16; ++i)358    ;359}360 361void test_loop_messages(void) {362  float a[100], b[100], c[100];363#pragma omp parallel364// expected-error@+2 {{variable must be of integer or pointer type}}365#pragma omp taskloop366  for (float fi = 0; fi < 10.0; fi++) {367    c[(int)fi] = a[(int)fi] + b[(int)fi];368  }369#pragma omp parallel370// expected-error@+2 {{variable must be of integer or pointer type}}371#pragma omp taskloop372  for (double fi = 0; fi < 10.0; fi++) {373    c[(int)fi] = a[(int)fi] + b[(int)fi];374  }375 376  // expected-warning@+2 {{OpenMP loop iteration variable cannot have more than 64 bits size and will be narrowed}}377  #pragma omp taskloop378  for (__int128 ii = 0; ii < 10; ii++) {379    c[ii] = a[ii] + b[ii];380  }381}382 383