brintos

brintos / llvm-project-archived public Read only

0
0
Text · 31.1 KiB · 5803d93 Raw
887 lines · c
1// RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45 %s -Wuninitialized2// RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=50 -verify=expected,omp50 %s -Wuninitialized3// RUN: %clang_cc1 -fsyntax-only -fopenmp -verify=expected,omp51 %s -Wuninitialized4 5// RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=45 -verify=expected,omp45 -verify %s -Wuninitialized6// RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=50 -verify=expected,omp50 -verify %s -Wuninitialized7// RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -verify=expected,omp51 -verify %s -Wuninitialized8 9void xxx(int argc) {10  int x; // expected-note {{initialize the variable 'x' to silence this warning}}11#pragma omp for simd12  for (int i = 0; i < 10; ++i)13    argc = x; // expected-warning {{variable 'x' is uninitialized when used here}}14}15 16// expected-error@+1 {{unexpected OpenMP directive '#pragma omp for simd'}}17#pragma omp for simd18 19// expected-error@+1 {{unexpected OpenMP directive '#pragma omp for simd'}}20#pragma omp for simd foo21 22void test_no_clause(void) {23  int i;24#pragma omp for simd25  for (i = 0; i < 16; ++i)26    ;27 28// expected-error@+2 {{statement after '#pragma omp for simd' must be a for loop}}29#pragma omp for simd30  ++i;31}32 33void test_branch_protected_scope(void) {34  int i = 0;35L1:36  ++i;37 38  int x[24];39 40#pragma omp parallel41#pragma omp for simd42  for (i = 0; i < 16; ++i) {43    if (i == 5)44      goto L1; // expected-error {{use of undeclared label 'L1'}}45    else if (i == 6)46      return; // expected-error {{cannot return from OpenMP region}}47    else if (i == 7)48      goto L2;49    else if (i == 8) {50    L2:51      x[i]++;52    }53  }54 55  if (x[0] == 0)56    goto L2; // expected-error {{use of undeclared label 'L2'}}57  else if (x[1] == 1)58    goto L1;59}60 61void test_invalid_clause(void) {62  int i;63#pragma omp parallel64// expected-warning@+1 {{extra tokens at the end of '#pragma omp for simd' are ignored}}65#pragma omp for simd foo bar66  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 for simd' are ignored}}75#pragma omp for simd;76  for (i = 0; i < 16; ++i)77    ;78#pragma omp parallel79// expected-warning@+1 {{extra tokens at the end of '#pragma omp for simd' are ignored}}80#pragma omp for simd linear(x);81  for (i = 0; i < 16; ++i)82    ;83 84#pragma omp parallel85// expected-warning@+1 {{extra tokens at the end of '#pragma omp for simd' are ignored}}86#pragma omp for simd private(x);87  for (i = 0; i < 16; ++i)88    ;89 90#pragma omp parallel91// expected-warning@+1 {{extra tokens at the end of '#pragma omp for simd' are ignored}}92#pragma omp for simd, private(x);93  for (i = 0; i < 16; ++i)94    ;95}96 97extern int foo(void);98void test_safelen(void) {99  int i;100// expected-error@+1 {{expected '('}}101#pragma omp for simd safelen102  for (i = 0; i < 16; ++i)103    ;104// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}105#pragma omp for simd safelen(106  for (i = 0; i < 16; ++i)107    ;108// expected-error@+1 {{expected expression}}109#pragma omp for simd safelen()110  for (i = 0; i < 16; ++i)111    ;112// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}113#pragma omp for simd safelen(,114  for (i = 0; i < 16; ++i)115    ;116// expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}117#pragma omp for simd safelen(, )118  for (i = 0; i < 16; ++i)119    ;120// expected-warning@+2 {{extra tokens at the end of '#pragma omp for simd' are ignored}}121// expected-error@+1 {{expected '('}}122#pragma omp for simd safelen 4)123  for (i = 0; i < 16; ++i)124    ;125// expected-error@+2 {{expected ')'}}126// expected-note@+1 {{to match this '('}}127#pragma omp for simd safelen(4128  for (i = 0; i < 16; ++i)129    ;130// expected-error@+2 {{expected ')'}}131// expected-note@+1 {{to match this '('}}132#pragma omp for simd safelen(4,133  for (i = 0; i < 16; ++i)134    ;135// expected-error@+2 {{expected ')'}}136// expected-note@+1 {{to match this '('}}137#pragma omp for simd safelen(4, )138  for (i = 0; i < 16; ++i)139    ;140#pragma omp for simd safelen(4)141  for (i = 0; i < 16; ++i)142    ;143// expected-error@+2 {{expected ')'}}144// expected-note@+1 {{to match this '('}}145#pragma omp for simd safelen(4 4)146  for (i = 0; i < 16; ++i)147    ;148// expected-error@+2 {{expected ')'}}149// expected-note@+1 {{to match this '('}}150#pragma omp for simd safelen(4, , 4)151  for (i = 0; i < 16; ++i)152    ;153#pragma omp for simd safelen(4)154  for (i = 0; i < 16; ++i)155    ;156// expected-error@+2 {{expected ')'}}157// expected-note@+1 {{to match this '('}}158#pragma omp for simd safelen(4, 8)159  for (i = 0; i < 16; ++i)160    ;161// expected-error@+1 {{integer constant expression}}162#pragma omp for simd safelen(2.5)163  for (i = 0; i < 16; ++i)164    ;165// expected-error@+1 {{integer constant expression}}166#pragma omp for simd safelen(foo())167  for (i = 0; i < 16; ++i)168    ;169// expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}170#pragma omp for simd safelen(-5)171  for (i = 0; i < 16; ++i)172    ;173// expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}174#pragma omp for simd safelen(0)175  for (i = 0; i < 16; ++i)176    ;177// expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}178#pragma omp for simd safelen(5 - 5)179  for (i = 0; i < 16; ++i)180    ;181}182 183void test_simdlen(void) {184  int i;185// expected-error@+1 {{expected '('}}186#pragma omp for simd simdlen187  for (i = 0; i < 16; ++i)188    ;189// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}190#pragma omp for simd simdlen(191  for (i = 0; i < 16; ++i)192    ;193// expected-error@+1 {{expected expression}}194#pragma omp for simd simdlen()195  for (i = 0; i < 16; ++i)196    ;197// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}198#pragma omp for simd simdlen(,199  for (i = 0; i < 16; ++i)200    ;201// expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}202#pragma omp for simd simdlen(, )203  for (i = 0; i < 16; ++i)204    ;205// expected-warning@+2 {{extra tokens at the end of '#pragma omp for simd' are ignored}}206// expected-error@+1 {{expected '('}}207#pragma omp for simd simdlen 4)208  for (i = 0; i < 16; ++i)209    ;210// expected-error@+2 {{expected ')'}}211// expected-note@+1 {{to match this '('}}212#pragma omp for simd simdlen(4213  for (i = 0; i < 16; ++i)214    ;215// expected-error@+2 {{expected ')'}}216// expected-note@+1 {{to match this '('}}217#pragma omp for simd simdlen(4,218  for (i = 0; i < 16; ++i)219    ;220// expected-error@+2 {{expected ')'}}221// expected-note@+1 {{to match this '('}}222#pragma omp for simd simdlen(4, )223  for (i = 0; i < 16; ++i)224    ;225#pragma omp for simd simdlen(4)226  for (i = 0; i < 16; ++i)227    ;228// expected-error@+2 {{expected ')'}}229// expected-note@+1 {{to match this '('}}230#pragma omp for simd simdlen(4 4)231  for (i = 0; i < 16; ++i)232    ;233// expected-error@+2 {{expected ')'}}234// expected-note@+1 {{to match this '('}}235#pragma omp for simd simdlen(4, , 4)236  for (i = 0; i < 16; ++i)237    ;238#pragma omp for simd simdlen(4)239  for (i = 0; i < 16; ++i)240    ;241// expected-error@+2 {{expected ')'}}242// expected-note@+1 {{to match this '('}}243#pragma omp for simd simdlen(4, 8)244  for (i = 0; i < 16; ++i)245    ;246// expected-error@+1 {{integer constant expression}}247#pragma omp for simd simdlen(2.5)248  for (i = 0; i < 16; ++i)249    ;250// expected-error@+1 {{integer constant expression}}251#pragma omp for simd simdlen(foo())252  for (i = 0; i < 16; ++i)253    ;254// expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}255#pragma omp for simd simdlen(-5)256  for (i = 0; i < 16; ++i)257    ;258// expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}259#pragma omp for simd simdlen(0)260  for (i = 0; i < 16; ++i)261    ;262// expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}263#pragma omp for simd simdlen(5 - 5)264  for (i = 0; i < 16; ++i)265    ;266}267 268void test_safelen_simdlen(void) {269  int i;270// expected-error@+1 {{the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter}}271#pragma omp for simd simdlen(6) safelen(5)272  for (i = 0; i < 16; ++i)273    ;274// expected-error@+1 {{the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter}}275#pragma omp for simd safelen(5) simdlen(6)276  for (i = 0; i < 16; ++i)277    ;278}279 280void test_collapse(void) {281  int i;282#pragma omp parallel283// expected-error@+1 {{expected '('}}284#pragma omp for simd collapse285  for (i = 0; i < 16; ++i)286    ;287#pragma omp parallel288// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}289#pragma omp for simd collapse(290  for (i = 0; i < 16; ++i)291    ;292#pragma omp parallel293// expected-error@+1 {{expected expression}}294#pragma omp for simd collapse()295  for (i = 0; i < 16; ++i)296    ;297#pragma omp parallel298// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}299#pragma omp for simd collapse(,300  for (i = 0; i < 16; ++i)301    ;302#pragma omp parallel303// expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}304#pragma omp for simd collapse(, )305  for (i = 0; i < 16; ++i)306    ;307#pragma omp parallel308// expected-warning@+2 {{extra tokens at the end of '#pragma omp for simd' are ignored}}309// expected-error@+1 {{expected '('}}310#pragma omp for simd collapse 4)311  for (i = 0; i < 16; ++i)312    ;313#pragma omp parallel314// expected-error@+2 {{expected ')'}}315// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}316#pragma omp for simd collapse(4317  for (i = 0; i < 16; ++i)318    ; // expected-error {{expected 4 for loops after '#pragma omp for simd', but found only 1}}319#pragma omp parallel320// expected-error@+2 {{expected ')'}}321// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}322#pragma omp for simd collapse(4,323  for (i = 0; i < 16; ++i)324    ; // expected-error {{expected 4 for loops after '#pragma omp for simd', but found only 1}}325#pragma omp parallel326// expected-error@+2 {{expected ')'}}327// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}328#pragma omp for simd collapse(4, )329  for (i = 0; i < 16; ++i)330    ; // expected-error {{expected 4 for loops after '#pragma omp for simd', but found only 1}}331#pragma omp parallel332// expected-note@+1 {{as specified in 'collapse' clause}}333#pragma omp for simd collapse(4)334  for (i = 0; i < 16; ++i)335    ; // expected-error {{expected 4 for loops after '#pragma omp for simd', but found only 1}}336#pragma omp parallel337// expected-error@+2 {{expected ')'}}338// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}339#pragma omp for simd collapse(4 4)340  for (i = 0; i < 16; ++i)341    ; // expected-error {{expected 4 for loops after '#pragma omp for simd', but found only 1}}342#pragma omp parallel343// expected-error@+2 {{expected ')'}}344// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}345#pragma omp for simd collapse(4, , 4)346  for (i = 0; i < 16; ++i)347    ; // expected-error {{expected 4 for loops after '#pragma omp for simd', but found only 1}}348#pragma omp parallel349#pragma omp for simd collapse(4)350  for (int i1 = 0; i1 < 16; ++i1)351    for (int i2 = 0; i2 < 16; ++i2)352      for (int i3 = 0; i3 < 16; ++i3)353        for (int i4 = 0; i4 < 16; ++i4)354          foo();355#pragma omp parallel356// expected-error@+2 {{expected ')'}}357// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}358#pragma omp for simd collapse(4, 8)359  for (i = 0; i < 16; ++i)360    ; // expected-error {{expected 4 for loops after '#pragma omp for simd', but found only 1}}361#pragma omp parallel362// expected-error@+1 {{integer constant expression}}363#pragma omp for simd collapse(2.5)364  for (i = 0; i < 16; ++i)365    ;366#pragma omp parallel367// expected-error@+1 {{integer constant expression}}368#pragma omp for simd collapse(foo())369  for (i = 0; i < 16; ++i)370    ;371#pragma omp parallel372// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}373#pragma omp for simd collapse(-5)374  for (i = 0; i < 16; ++i)375    ;376#pragma omp parallel377// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}378#pragma omp for simd collapse(0)379  for (i = 0; i < 16; ++i)380    ;381#pragma omp parallel382// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}383#pragma omp for simd collapse(5 - 5)384  for (i = 0; i < 16; ++i)385    ;386#pragma omp parallel387#pragma omp for simd collapse(2)388  for (i = 0; i < 16; ++i) // expected-note {{defined as lastprivate}}389// expected-note@+1 {{variable with automatic storage duration is predetermined as private; perhaps you forget to enclose 'omp for simd' directive into a parallel or another task region?}}390    for (int j = 0; j < 16; ++j)391// expected-error@+2 2 {{reduction variable must be shared}}392// expected-error@+1 {{OpenMP constructs may not be nested inside a simd region}}393#pragma omp for simd reduction(+ : i, j)394      for (int k = 0; k < 16; ++k)395        i += j;396}397 398void test_linear(void) {399  int i;400// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}401#pragma omp for simd linear(402  for (i = 0; i < 16; ++i)403    ;404// expected-error@+2 {{expected expression}}405// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}406#pragma omp for simd linear(,407  for (i = 0; i < 16; ++i)408    ;409// expected-error@+2 {{expected expression}}410// expected-error@+1 {{expected expression}}411#pragma omp for simd linear(, )412  for (i = 0; i < 16; ++i)413    ;414// expected-error@+1 {{expected expression}}415#pragma omp for simd linear()416  for (i = 0; i < 16; ++i)417    ;418// expected-error@+1 {{expected expression}}419#pragma omp for simd linear(int)420  for (i = 0; i < 16; ++i)421    ;422// expected-error@+1 {{expected variable name}}423#pragma omp for simd linear(0)424  for (i = 0; i < 16; ++i)425    ;426// expected-error@+1 {{use of undeclared identifier 'x'}}427#pragma omp for simd linear(x)428  for (i = 0; i < 16; ++i)429    ;430// expected-error@+2 {{use of undeclared identifier 'x'}}431// expected-error@+1 {{use of undeclared identifier 'y'}}432#pragma omp for simd linear(x, y)433  for (i = 0; i < 16; ++i)434    ;435// expected-error@+3 {{use of undeclared identifier 'x'}}436// expected-error@+2 {{use of undeclared identifier 'y'}}437// expected-error@+1 {{use of undeclared identifier 'z'}}438#pragma omp for simd linear(x, y, z)439  for (i = 0; i < 16; ++i)440    ;441 442  int x, y;443// expected-error@+1 {{expected expression}}444#pragma omp for simd linear(x :)445  for (i = 0; i < 16; ++i)446    ;447// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}448#pragma omp for simd linear(x :, )449  for (i = 0; i < 16; ++i)450    ;451#pragma omp for simd linear(x : 1)452  for (i = 0; i < 16; ++i)453    ;454#pragma omp for simd linear(x : 2 * 2)455  for (i = 0; i < 16; ++i)456    ;457// expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}458#pragma omp for simd linear(x : 1, y)459  for (i = 0; i < 16; ++i)460    ;461// expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}462#pragma omp for simd linear(x : 1, y, z : 1)463  for (i = 0; i < 16; ++i)464    ;465 466// expected-note@+2 {{defined as linear}}467// expected-error@+1 {{linear variable cannot be linear}}468#pragma omp for simd linear(x) linear(x)469  for (i = 0; i < 16; ++i)470    ;471 472// expected-note@+2 {{defined as private}}473// expected-error@+1 {{private variable cannot be linear}}474#pragma omp for simd private(x) linear(x)475  for (i = 0; i < 16; ++i)476    ;477 478// expected-note@+2 {{defined as linear}}479// expected-error@+1 {{linear variable cannot be private}}480#pragma omp for simd linear(x) private(x)481  for (i = 0; i < 16; ++i)482    ;483 484// expected-warning@+1 {{zero linear step ('x' and other variables in clause should probably be const)}}485#pragma omp for simd linear(x, y : 0)486  for (i = 0; i < 16; ++i)487    ;488 489// expected-note@+2 {{defined as linear}}490// expected-error@+1 {{linear variable cannot be lastprivate}}491#pragma omp for simd linear(x) lastprivate(x)492  for (i = 0; i < 16; ++i)493    ;494 495#pragma omp parallel496// expected-note@+2 {{defined as lastprivate}}497// expected-error@+1 {{lastprivate variable cannot be linear}}498#pragma omp for simd lastprivate(x) linear(x)499  for (i = 0; i < 16; ++i)500    ;501}502 503void test_aligned(void) {504  int i;505// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}506#pragma omp for simd aligned(507  for (i = 0; i < 16; ++i)508    ;509// expected-error@+2 {{expected expression}}510// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}511#pragma omp for simd aligned(,512  for (i = 0; i < 16; ++i)513    ;514// expected-error@+2 {{expected expression}}515// expected-error@+1 {{expected expression}}516#pragma omp for simd aligned(, )517  for (i = 0; i < 16; ++i)518    ;519// expected-error@+1 {{expected expression}}520#pragma omp for simd aligned()521  for (i = 0; i < 16; ++i)522    ;523// expected-error@+1 {{expected expression}}524#pragma omp for simd aligned(int)525  for (i = 0; i < 16; ++i)526    ;527// expected-error@+1 {{expected variable name}}528#pragma omp for simd aligned(0)529  for (i = 0; i < 16; ++i)530    ;531// expected-error@+1 {{use of undeclared identifier 'x'}}532#pragma omp for simd aligned(x)533  for (i = 0; i < 16; ++i)534    ;535// expected-error@+2 {{use of undeclared identifier 'x'}}536// expected-error@+1 {{use of undeclared identifier 'y'}}537#pragma omp for simd aligned(x, y)538  for (i = 0; i < 16; ++i)539    ;540// expected-error@+3 {{use of undeclared identifier 'x'}}541// expected-error@+2 {{use of undeclared identifier 'y'}}542// expected-error@+1 {{use of undeclared identifier 'z'}}543#pragma omp for simd aligned(x, y, z)544  for (i = 0; i < 16; ++i)545    ;546 547  int *x, y, z[25]; // expected-note 4 {{'y' defined here}}548#pragma omp for simd aligned(x)549  for (i = 0; i < 16; ++i)550    ;551#pragma omp for simd aligned(z)552  for (i = 0; i < 16; ++i)553    ;554// expected-error@+1 {{expected expression}}555#pragma omp for simd aligned(x :)556  for (i = 0; i < 16; ++i)557    ;558// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}559#pragma omp for simd aligned(x :, )560  for (i = 0; i < 16; ++i)561    ;562#pragma omp for simd aligned(x : 1)563  for (i = 0; i < 16; ++i)564    ;565#pragma omp for simd aligned(x : 2 * 2)566  for (i = 0; i < 16; ++i)567    ;568// expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}569#pragma omp for simd aligned(x : 1, y)570  for (i = 0; i < 16; ++i)571    ;572// expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}573#pragma omp for simd aligned(x : 1, y, z : 1)574  for (i = 0; i < 16; ++i)575    ;576 577// expected-error@+1 {{argument of aligned clause should be array or pointer, not 'int'}}578#pragma omp for simd aligned(x, y)579  for (i = 0; i < 16; ++i)580    ;581// expected-error@+1 {{argument of aligned clause should be array or pointer, not 'int'}}582#pragma omp for simd aligned(x, y, z)583  for (i = 0; i < 16; ++i)584    ;585 586// expected-note@+2 {{defined as aligned}}587// expected-error@+1 {{a variable cannot appear in more than one aligned clause}}588#pragma omp for simd aligned(x) aligned(z, x)589  for (i = 0; i < 16; ++i)590    ;591 592// expected-note@+3 {{defined as aligned}}593// expected-error@+2 {{a variable cannot appear in more than one aligned clause}}594// expected-error@+1 2 {{argument of aligned clause should be array or pointer, not 'int'}}595#pragma omp for simd aligned(x, y, z) aligned(y, z)596  for (i = 0; i < 16; ++i)597    ;598}599 600 601void test_private(void) {602  int i;603#pragma omp parallel604// expected-error@+2 {{expected expression}}605// expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}606#pragma omp for simd private(607  for (i = 0; i < 16; ++i)608    ;609#pragma omp parallel610// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}611// expected-error@+1 2 {{expected expression}}612#pragma omp for simd private(,613  for (i = 0; i < 16; ++i)614    ;615#pragma omp parallel616// expected-error@+1 2 {{expected expression}}617#pragma omp for simd private(, )618  for (i = 0; i < 16; ++i)619    ;620#pragma omp parallel621// expected-error@+1 {{expected expression}}622#pragma omp for simd private()623  for (i = 0; i < 16; ++i)624    ;625#pragma omp parallel626// expected-error@+1 {{expected expression}}627#pragma omp for simd private(int)628  for (i = 0; i < 16; ++i)629    ;630#pragma omp parallel631// expected-error@+1 {{expected variable name}}632#pragma omp for simd private(0)633  for (i = 0; i < 16; ++i)634    ;635 636  int x, y, z;637#pragma omp parallel638#pragma omp for simd private(x)639  for (i = 0; i < 16; ++i)640    ;641#pragma omp parallel642#pragma omp for simd private(x, y)643  for (i = 0; i < 16; ++i)644    ;645#pragma omp parallel646#pragma omp for simd private(x, y, z)647  for (i = 0; i < 16; ++i) {648    x = y * i + z;649  }650}651 652void test_lastprivate(void) {653  int i;654#pragma omp parallel655// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}656// expected-error@+1 {{expected expression}}657#pragma omp for simd lastprivate(658  for (i = 0; i < 16; ++i)659    ;660 661#pragma omp parallel662// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}663// expected-error@+1 2 {{expected expression}}664#pragma omp for simd lastprivate(,665  for (i = 0; i < 16; ++i)666    ;667#pragma omp parallel668// expected-error@+1 2 {{expected expression}}669#pragma omp for simd lastprivate(, )670  for (i = 0; i < 16; ++i)671    ;672#pragma omp parallel673// expected-error@+1 {{expected expression}}674#pragma omp for simd lastprivate()675  for (i = 0; i < 16; ++i)676    ;677#pragma omp parallel678// expected-error@+1 {{expected expression}}679#pragma omp for simd lastprivate(int)680  for (i = 0; i < 16; ++i)681    ;682#pragma omp parallel683// expected-error@+1 {{expected variable name}}684#pragma omp for simd lastprivate(0)685  for (i = 0; i < 16; ++i)686    ;687 688  int x, y, z;689#pragma omp parallel690#pragma omp for simd lastprivate(x)691  for (i = 0; i < 16; ++i)692    ;693#pragma omp parallel694#pragma omp for simd lastprivate(x, y)695  for (i = 0; i < 16; ++i)696    ;697#pragma omp parallel698#pragma omp for simd lastprivate(x, y, z)699  for (i = 0; i < 16; ++i)700    ;701}702 703void test_firstprivate(void) {704  int i;705#pragma omp parallel706// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}707// expected-error@+1 {{expected expression}}708#pragma omp for simd firstprivate(709  for (i = 0; i < 16; ++i)710    ;711 712#pragma omp parallel713// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}714// expected-error@+1 2 {{expected expression}}715#pragma omp for simd firstprivate(,716  for (i = 0; i < 16; ++i)717    ;718#pragma omp parallel719// expected-error@+1 2 {{expected expression}}720#pragma omp for simd firstprivate(, )721  for (i = 0; i < 16; ++i)722    ;723#pragma omp parallel724// expected-error@+1 {{expected expression}}725#pragma omp for simd firstprivate()726  for (i = 0; i < 16; ++i)727    ;728#pragma omp parallel729// expected-error@+1 {{expected expression}}730#pragma omp for simd firstprivate(int)731  for (i = 0; i < 16; ++i)732    ;733#pragma omp parallel734// expected-error@+1 {{expected variable name}}735#pragma omp for simd firstprivate(0)736  for (i = 0; i < 16; ++i)737    ;738 739  int x, y, z;740#pragma omp parallel741#pragma omp for simd lastprivate(x) firstprivate(x)742  for (i = 0; i < 16; ++i)743    ;744#pragma omp parallel745#pragma omp for simd lastprivate(x, y) firstprivate(x, y)746  for (i = 0; i < 16; ++i)747    ;748#pragma omp parallel749#pragma omp for simd lastprivate(x, y, z) firstprivate(x, y, z)750  for (i = 0; i < 16; ++i)751    ;752}753 754void test_loop_messages(void) {755  float a[100], b[100], c[100];756#pragma omp parallel757// expected-error@+2 {{variable must be of integer or pointer type}}758#pragma omp for simd759  for (float fi = 0; fi < 10.0; fi++) {760    c[(int)fi] = a[(int)fi] + b[(int)fi];761  }762#pragma omp parallel763// expected-error@+2 {{variable must be of integer or pointer type}}764#pragma omp for simd765  for (double fi = 0; fi < 10.0; fi++) {766    c[(int)fi] = a[(int)fi] + b[(int)fi];767  }768}769 770void test_nontemporal(void) {771  int i;772// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}} expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}773#pragma omp for simd nontemporal(774  for (i = 0; i < 16; ++i)775    ;776// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}} expected-error@+1 2 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}777#pragma omp for simd nontemporal(,778  for (i = 0; i < 16; ++i)779    ;780// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}} expected-error@+1 2 {{expected expression}}781#pragma omp for simd nontemporal(, )782  for (i = 0; i < 16; ++i)783    ;784// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}} expected-error@+1 {{expected expression}}785#pragma omp for simd nontemporal()786  for (i = 0; i < 16; ++i)787    ;788// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}} expected-error@+1 {{expected expression}}789#pragma omp for simd nontemporal(int)790  for (i = 0; i < 16; ++i)791    ;792// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}} omp50-error@+1 {{expected variable name}} omp51-error@+1 {{expected variable name}}793#pragma omp for simd nontemporal(0)794  for (i = 0; i < 16; ++i)795    ;796// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}} expected-error@+1 {{use of undeclared identifier 'x'}}797#pragma omp for simd nontemporal(x)798  for (i = 0; i < 16; ++i)799    ;800// expected-error@+2 {{use of undeclared identifier 'x'}}801// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}} expected-error@+1 {{use of undeclared identifier 'y'}}802#pragma omp for simd nontemporal(x, y)803  for (i = 0; i < 16; ++i)804    ;805// expected-error@+3 {{use of undeclared identifier 'x'}}806// expected-error@+2 {{use of undeclared identifier 'y'}}807// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}} expected-error@+1 {{use of undeclared identifier 'z'}}808#pragma omp for simd nontemporal(x, y, z)809  for (i = 0; i < 16; ++i)810    ;811 812  int x, y;813// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}814#pragma omp for simd nontemporal(x :)815  for (i = 0; i < 16; ++i)816    ;817// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}}818#pragma omp for simd nontemporal(x :, )819  for (i = 0; i < 16; ++i)820    ;821 822// omp51-note@+3 {{defined as nontemporal}}823// omp50-note@+2 {{defined as nontemporal}}824// omp45-error@+1 2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}} omp50-error@+1 {{a variable cannot appear in more than one nontemporal clause}} omp51-error@+1 {{a variable cannot appear in more than one nontemporal clause}}825#pragma omp for simd nontemporal(x) nontemporal(x)826  for (i = 0; i < 16; ++i)827    ;828 829// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}}830#pragma omp for simd private(x) nontemporal(x)831  for (i = 0; i < 16; ++i)832    ;833 834// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}}835#pragma omp for simd nontemporal(x) private(x)836  for (i = 0; i < 16; ++i)837    ;838 839// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}}840#pragma omp for simd nontemporal(x, y : 0)841  for (i = 0; i < 16; ++i)842    ;843 844#pragma omp parallel845// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}}846#pragma omp for simd nontemporal(x) lastprivate(x)847  for (i = 0; i < 16; ++i)848    ;849 850#pragma omp parallel851// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp for simd'}}852#pragma omp for simd lastprivate(x) nontemporal(x)853  for (i = 0; i < 16; ++i)854    ;855#pragma omp for simd order // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp for simd'}} expected-error {{expected '(' after 'order'}}856  for (int i = 0; i < 10; ++i)857    ;858#pragma omp for simd order( // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp for simd'}} expected-error {{expected ')'}} expected-note {{to match this '('}} omp50-error {{expected 'concurrent' in OpenMP clause 'order'}} omp51-error {{expected 'concurrent' in OpenMP clause 'order'}}859  for (int i = 0; i < 10; ++i)860    ;861#pragma omp for simd order(none // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp for simd'}} expected-error {{expected ')'}} expected-note {{to match this '('}} omp50-error {{expected 'concurrent' in OpenMP clause 'order'}} omp51-error {{expected 'concurrent' in OpenMP clause 'order'}}862  for (int i = 0; i < 10; ++i)863    ;864#pragma omp for simd order(concurrent // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp for simd'}} expected-error {{expected ')'}} expected-note {{to match this '('}}865  for (int i = 0; i < 10; ++i)866    ;867#pragma omp for simd order(concurrent) // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp for simd'}}868  for (int i = 0; i < 10; ++i)869    ;870#pragma omp for simd order(unconstrained:) // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp for simd'}} omp50-error {{expected 'concurrent' in OpenMP clause 'order'}} omp51-error {{expected 'concurrent' in OpenMP clause 'order'}}871  for (int i = 0; i < 10; ++i)872    ;873#pragma omp for simd order(reproducible:concurrent // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp for simd'}} expected-error {{expected ')'}} expected-note {{to match this '('}} omp50-error {{expected 'concurrent' in OpenMP clause 'order'}}874  for (int i = 0; i < 10; ++i)875    ;876#pragma omp for simd order(reproducible:concurrent) // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp for simd'}} omp50-error {{expected 'concurrent' in OpenMP clause 'order'}}877  for (int i = 0; i < 10; ++i)878    ;879#pragma omp for simd order(unconstrained:concurrent) // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp for simd'}} omp50-error {{expected 'concurrent' in OpenMP clause 'order'}}880  for (int i = 0; i < 10; ++i)881    ;882#pragma omp for simd order(concurrent) order(concurrent) // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp for simd'}} omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp for simd'}} omp51-error {{directive '#pragma omp for simd' cannot contain more than one 'order' clause}}883  for (int i = 0; i < 10; ++i)884    ;885}886 887