brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.7 KiB · 8232e90 Raw
386 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 parallel master 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 parallel master taskloop'}}13#pragma omp parallel master taskloop14 15// expected-error@+1 {{unexpected OpenMP directive '#pragma omp parallel master taskloop'}}16#pragma omp parallel master taskloop foo17 18void test_no_clause(void) {19  int i;20#pragma omp parallel master taskloop21  for (i = 0; i < 16; ++i)22    ;23 24// expected-error@+2 {{statement after '#pragma omp parallel master taskloop' must be a for loop}}25#pragma omp parallel master 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 parallel master 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, a;59// expected-warning@+1 {{extra tokens at the end of '#pragma omp parallel master taskloop' are ignored}}60#pragma omp parallel master taskloop foo bar61  for (i = 0; i < 16; ++i)62    ;63// expected-error@+1 {{directive '#pragma omp parallel master taskloop' cannot contain more than one 'nogroup' clause}}64#pragma omp parallel master taskloop nogroup nogroup65  for (i = 0; i < 16; ++i)66    ;67// expected-error@+1 {{unexpected OpenMP clause 'in_reduction' in directive '#pragma omp parallel master taskloop'}}68#pragma omp parallel master taskloop in_reduction(+:a)69  for (i = 0; i < 16; ++i)70    ;71}72 73void test_non_identifiers(void) {74  int i, x;75 76#pragma omp parallel77// expected-warning@+1 {{extra tokens at the end of '#pragma omp parallel master taskloop' are ignored}}78#pragma omp parallel master taskloop;79  for (i = 0; i < 16; ++i)80    ;81// expected-warning@+3 {{extra tokens at the end of '#pragma omp parallel master taskloop' are ignored}}82// expected-error@+2 {{unexpected OpenMP clause 'linear' in directive '#pragma omp parallel master taskloop'}}83#pragma omp parallel84#pragma omp parallel master taskloop linear(x);85  for (i = 0; i < 16; ++i)86    ;87 88#pragma omp parallel89// expected-warning@+1 {{extra tokens at the end of '#pragma omp parallel master taskloop' are ignored}}90#pragma omp parallel master taskloop private(x);91  for (i = 0; i < 16; ++i)92    ;93 94#pragma omp parallel95// expected-warning@+1 {{extra tokens at the end of '#pragma omp parallel master taskloop' are ignored}}96#pragma omp parallel master taskloop, private(x);97  for (i = 0; i < 16; ++i)98    ;99}100 101extern int foo(void);102 103void test_collapse(void) {104  int i;105#pragma omp parallel106// expected-error@+1 {{expected '('}}107#pragma omp parallel master taskloop collapse108  for (i = 0; i < 16; ++i)109    ;110#pragma omp parallel111// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}112#pragma omp parallel master taskloop collapse(113  for (i = 0; i < 16; ++i)114    ;115#pragma omp parallel116// expected-error@+1 {{expected expression}}117#pragma omp parallel master taskloop collapse()118  for (i = 0; i < 16; ++i)119    ;120#pragma omp parallel121// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}122#pragma omp parallel master taskloop collapse(,123  for (i = 0; i < 16; ++i)124    ;125#pragma omp parallel126// expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}127#pragma omp parallel master taskloop collapse(, )128  for (i = 0; i < 16; ++i)129    ;130#pragma omp parallel131// expected-warning@+2 {{extra tokens at the end of '#pragma omp parallel master taskloop' are ignored}}132// expected-error@+1 {{expected '('}}133#pragma omp parallel master taskloop collapse 4)134  for (i = 0; i < 16; ++i)135    ;136#pragma omp parallel137// expected-error@+2 {{expected ')'}}138// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}139#pragma omp parallel master taskloop collapse(4140  for (i = 0; i < 16; ++i)141    ; // expected-error {{expected 4 for loops after '#pragma omp parallel master taskloop', but found only 1}}142#pragma omp parallel143// expected-error@+2 {{expected ')'}}144// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}145#pragma omp parallel master taskloop collapse(4,146  for (i = 0; i < 16; ++i)147    ; // expected-error {{expected 4 for loops after '#pragma omp parallel master taskloop', but found only 1}}148#pragma omp parallel149// expected-error@+2 {{expected ')'}}150// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}151#pragma omp parallel master taskloop collapse(4, )152  for (i = 0; i < 16; ++i)153    ; // expected-error {{expected 4 for loops after '#pragma omp parallel master taskloop', but found only 1}}154#pragma omp parallel155// expected-note@+1 {{as specified in 'collapse' clause}}156#pragma omp parallel master taskloop collapse(4)157  for (i = 0; i < 16; ++i)158    ; // expected-error {{expected 4 for loops after '#pragma omp parallel master taskloop', but found only 1}}159#pragma omp parallel160// expected-error@+2 {{expected ')'}}161// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}162#pragma omp parallel master taskloop collapse(4 4)163  for (i = 0; i < 16; ++i)164    ; // expected-error {{expected 4 for loops after '#pragma omp parallel master taskloop', but found only 1}}165#pragma omp parallel166// expected-error@+2 {{expected ')'}}167// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}168#pragma omp parallel master taskloop collapse(4, , 4)169  for (i = 0; i < 16; ++i)170    ; // expected-error {{expected 4 for loops after '#pragma omp parallel master taskloop', but found only 1}}171#pragma omp parallel172#pragma omp parallel master taskloop collapse(4)173  for (int i1 = 0; i1 < 16; ++i1)174    for (int i2 = 0; i2 < 16; ++i2)175      for (int i3 = 0; i3 < 16; ++i3)176        for (int i4 = 0; i4 < 16; ++i4)177          foo();178#pragma omp parallel179// expected-error@+2 {{expected ')'}}180// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}181#pragma omp parallel master taskloop collapse(4, 8)182  for (i = 0; i < 16; ++i)183    ; // expected-error {{expected 4 for loops after '#pragma omp parallel master taskloop', but found only 1}}184#pragma omp parallel185// expected-error@+1 {{integer constant expression}}186#pragma omp parallel master taskloop collapse(2.5)187  for (i = 0; i < 16; ++i)188    ;189#pragma omp parallel190// expected-error@+1 {{integer constant expression}}191#pragma omp parallel master taskloop collapse(foo())192  for (i = 0; i < 16; ++i)193    ;194#pragma omp parallel195// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}196#pragma omp parallel master taskloop collapse(-5)197  for (i = 0; i < 16; ++i)198    ;199#pragma omp parallel200// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}201#pragma omp parallel master taskloop collapse(0)202  for (i = 0; i < 16; ++i)203    ;204#pragma omp parallel205// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}206#pragma omp parallel master taskloop collapse(5 - 5)207  for (i = 0; i < 16; ++i)208    ;209}210 211void test_private(void) {212  int i;213#pragma omp parallel214// expected-error@+2 {{expected expression}}215// expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}216#pragma omp parallel master taskloop private(217  for (i = 0; i < 16; ++i)218    ;219#pragma omp parallel220// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}221// expected-error@+1 2 {{expected expression}}222#pragma omp parallel master taskloop private(,223  for (i = 0; i < 16; ++i)224    ;225#pragma omp parallel226// expected-error@+1 2 {{expected expression}}227#pragma omp parallel master taskloop private(, )228  for (i = 0; i < 16; ++i)229    ;230#pragma omp parallel231// expected-error@+1 {{expected expression}}232#pragma omp parallel master taskloop private()233  for (i = 0; i < 16; ++i)234    ;235#pragma omp parallel236// expected-error@+1 {{expected expression}}237#pragma omp parallel master taskloop private(int)238  for (i = 0; i < 16; ++i)239    ;240#pragma omp parallel241// expected-error@+1 {{expected variable name}}242#pragma omp parallel master taskloop private(0)243  for (i = 0; i < 16; ++i)244    ;245 246  int x, y, z;247#pragma omp parallel248#pragma omp parallel master taskloop private(x)249  for (i = 0; i < 16; ++i)250    ;251#pragma omp parallel252#pragma omp parallel master taskloop private(x, y)253  for (i = 0; i < 16; ++i)254    ;255#pragma omp parallel256#pragma omp parallel master taskloop private(x, y, z)257  for (i = 0; i < 16; ++i) {258    x = y * i + z;259  }260}261 262void test_lastprivate(void) {263  int i;264#pragma omp parallel265// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}266// expected-error@+1 {{expected expression}}267#pragma omp parallel master taskloop lastprivate(268  for (i = 0; i < 16; ++i)269    ;270 271#pragma omp parallel272// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}273// expected-error@+1 2 {{expected expression}}274#pragma omp parallel master taskloop lastprivate(,275  for (i = 0; i < 16; ++i)276    ;277#pragma omp parallel278// expected-error@+1 2 {{expected expression}}279#pragma omp parallel master taskloop lastprivate(, )280  for (i = 0; i < 16; ++i)281    ;282#pragma omp parallel283// expected-error@+1 {{expected expression}}284#pragma omp parallel master taskloop lastprivate()285  for (i = 0; i < 16; ++i)286    ;287#pragma omp parallel288// expected-error@+1 {{expected expression}}289#pragma omp parallel master taskloop lastprivate(int)290  for (i = 0; i < 16; ++i)291    ;292#pragma omp parallel293// expected-error@+1 {{expected variable name}}294#pragma omp parallel master taskloop lastprivate(0)295  for (i = 0; i < 16; ++i)296    ;297 298  int x, y, z;299#pragma omp parallel300#pragma omp parallel master taskloop lastprivate(x)301  for (i = 0; i < 16; ++i)302    ;303#pragma omp parallel304#pragma omp parallel master taskloop lastprivate(x, y)305  for (i = 0; i < 16; ++i)306    ;307#pragma omp parallel308#pragma omp parallel master taskloop lastprivate(x, y, z)309  for (i = 0; i < 16; ++i)310    ;311}312 313void test_firstprivate(void) {314  int i;315#pragma omp parallel316// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}317// expected-error@+1 {{expected expression}}318#pragma omp parallel master taskloop firstprivate(319  for (i = 0; i < 16; ++i)320    ;321 322#pragma omp parallel323// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}324// expected-error@+1 2 {{expected expression}}325#pragma omp parallel master taskloop firstprivate(,326  for (i = 0; i < 16; ++i)327    ;328#pragma omp parallel329// expected-error@+1 2 {{expected expression}}330#pragma omp parallel master taskloop firstprivate(, )331  for (i = 0; i < 16; ++i)332    ;333#pragma omp parallel334// expected-error@+1 {{expected expression}}335#pragma omp parallel master taskloop firstprivate()336  for (i = 0; i < 16; ++i)337    ;338#pragma omp parallel339// expected-error@+1 {{expected expression}}340#pragma omp parallel master taskloop firstprivate(int)341  for (i = 0; i < 16; ++i)342    ;343#pragma omp parallel344// expected-error@+1 {{expected variable name}}345#pragma omp parallel master taskloop firstprivate(0)346  for (i = 0; i < 16; ++i)347    ;348 349  int x, y, z;350#pragma omp parallel351#pragma omp parallel master taskloop lastprivate(x) firstprivate(x)352  for (i = 0; i < 16; ++i)353    ;354#pragma omp parallel355#pragma omp parallel master taskloop lastprivate(x, y) firstprivate(x, y)356  for (i = 0; i < 16; ++i)357    ;358#pragma omp parallel359#pragma omp parallel master taskloop lastprivate(x, y, z) firstprivate(x, y, z)360  for (i = 0; i < 16; ++i)361    ;362}363 364void test_loop_messages(void) {365  float a[100], b[100], c[100];366#pragma omp parallel367// expected-error@+2 {{variable must be of integer or pointer type}}368#pragma omp parallel master taskloop369  for (float fi = 0; fi < 10.0; fi++) {370    c[(int)fi] = a[(int)fi] + b[(int)fi];371  }372#pragma omp parallel373// expected-error@+2 {{variable must be of integer or pointer type}}374#pragma omp parallel master taskloop375  for (double fi = 0; fi < 10.0; fi++) {376    c[(int)fi] = a[(int)fi] + b[(int)fi];377  }378 379  // expected-warning@+2 {{OpenMP loop iteration variable cannot have more than 64 bits size and will be narrowed}}380  #pragma omp parallel master taskloop381  for (__int128 ii = 0; ii < 10; ii++) {382    c[ii] = a[ii] + b[ii];383  }384}385 386