brintos

brintos / llvm-project-archived public Read only

0
0
Text · 36.6 KiB · a0f80e7 Raw
1020 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 %s -Wuninitialized6// RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=50 -verify=expected,omp50 %s -Wuninitialized7// RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -verify=expected,omp51 %s -Wuninitialized8 9void xxx(int argc) {10  int x; // expected-note {{initialize the variable 'x' to silence this warning}}11#pragma omp distribute parallel 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 distribute parallel for simd'}}17#pragma omp distribute parallel for simd18 19// expected-error@+1 {{unexpected OpenMP directive '#pragma omp distribute parallel for simd'}}20#pragma omp distribute parallel for simd foo21 22void test_no_clause(void) {23  int i;24#pragma omp distribute parallel for simd25  for (i = 0; i < 16; ++i)26    ;27 28// expected-error@+2 {{statement after '#pragma omp distribute parallel for simd' must be a for loop}}29#pragma omp distribute parallel 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 target41#pragma omp teams42#pragma omp distribute parallel for simd43  for (i = 0; i < 16; ++i) {44    if (i == 5)45      goto L1; // expected-error {{use of undeclared label 'L1'}}46    else if (i == 6)47      return; // expected-error {{cannot return from OpenMP region}}48    else if (i == 7)49      goto L2;50    else if (i == 8) {51    L2:52      x[i]++;53    }54  }55 56  if (x[0] == 0)57    goto L2; // expected-error {{use of undeclared label 'L2'}}58  else if (x[1] == 1)59    goto L1;60}61 62void test_invalid_clause(void) {63  int i;64#pragma omp target65#pragma omp teams66// expected-warning@+1 {{extra tokens at the end of '#pragma omp distribute parallel for simd' are ignored}}67#pragma omp distribute parallel for simd foo bar68  for (i = 0; i < 16; ++i)69    ;70}71 72void test_non_identifiers(void) {73  int i, x;74 75#pragma omp target76#pragma omp teams77// expected-warning@+1 {{extra tokens at the end of '#pragma omp distribute parallel for simd' are ignored}}78#pragma omp distribute parallel for simd;79  for (i = 0; i < 16; ++i)80    ;81#pragma omp target82#pragma omp teams83// expected-warning@+1 {{extra tokens at the end of '#pragma omp distribute parallel for simd' are ignored}}84#pragma omp distribute parallel for simd firstprivate(x);85  for (i = 0; i < 16; ++i)86    ;87 88#pragma omp target89#pragma omp teams90// expected-warning@+1 {{extra tokens at the end of '#pragma omp distribute parallel for simd' are ignored}}91#pragma omp distribute parallel for simd private(x);92  for (i = 0; i < 16; ++i)93    ;94 95#pragma omp target96#pragma omp teams97// expected-warning@+1 {{extra tokens at the end of '#pragma omp distribute parallel for simd' are ignored}}98#pragma omp distribute parallel for simd, private(x);99  for (i = 0; i < 16; ++i)100    ;101}102 103extern int foo(void);104void test_safelen(void) {105  int i;106#pragma omp target107#pragma omp teams108// expected-error@+1 {{expected '('}}109#pragma omp distribute parallel for simd safelen110  for (i = 0; i < 16; ++i)111    ;112#pragma omp target113#pragma omp teams114// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}115#pragma omp distribute parallel for simd safelen(116  for (i = 0; i < 16; ++i)117    ;118#pragma omp target119#pragma omp teams120// expected-error@+1 {{expected expression}}121#pragma omp distribute parallel for simd safelen()122  for (i = 0; i < 16; ++i)123    ;124#pragma omp target125#pragma omp teams126// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}127#pragma omp distribute parallel for simd safelen(,128  for (i = 0; i < 16; ++i)129    ;130#pragma omp target131#pragma omp teams132// expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}133#pragma omp distribute parallel for simd safelen(, )134  for (i = 0; i < 16; ++i)135    ;136#pragma omp target137#pragma omp teams138// expected-warning@+2 {{extra tokens at the end of '#pragma omp distribute parallel for simd' are ignored}}139// expected-error@+1 {{expected '('}}140#pragma omp distribute parallel for simd safelen 4)141  for (i = 0; i < 16; ++i)142    ;143#pragma omp target144#pragma omp teams145// expected-error@+2 {{expected ')'}}146// expected-note@+1 {{to match this '('}}147#pragma omp distribute parallel for simd safelen(4148  for (i = 0; i < 16; ++i)149    ;150#pragma omp target151#pragma omp teams152// expected-error@+2 {{expected ')'}}153// expected-note@+1 {{to match this '('}}154#pragma omp distribute parallel for simd safelen(4,155  for (i = 0; i < 16; ++i)156    ;157#pragma omp target158#pragma omp teams159// expected-error@+2 {{expected ')'}}160// expected-note@+1 {{to match this '('}}161#pragma omp distribute parallel for simd safelen(4, )162  for (i = 0; i < 16; ++i)163    ;164#pragma omp target165#pragma omp teams166#pragma omp distribute parallel for simd safelen(4)167  for (i = 0; i < 16; ++i)168    ;169#pragma omp target170#pragma omp teams171// expected-error@+2 {{expected ')'}}172// expected-note@+1 {{to match this '('}}173#pragma omp distribute parallel for simd safelen(4 4)174  for (i = 0; i < 16; ++i)175    ;176#pragma omp target177#pragma omp teams178// expected-error@+2 {{expected ')'}}179// expected-note@+1 {{to match this '('}}180#pragma omp distribute parallel for simd safelen(4, , 4)181  for (i = 0; i < 16; ++i)182    ;183#pragma omp target184#pragma omp teams185#pragma omp distribute parallel for simd safelen(4)186  for (i = 0; i < 16; ++i)187    ;188#pragma omp target189#pragma omp teams190// expected-error@+2 {{expected ')'}}191// expected-note@+1 {{to match this '('}}192#pragma omp distribute parallel for simd safelen(4, 8)193  for (i = 0; i < 16; ++i)194    ;195#pragma omp target196#pragma omp teams197// expected-error@+1 {{integer constant expression}}198#pragma omp distribute parallel for simd safelen(2.5)199  for (i = 0; i < 16; ++i)200    ;201#pragma omp target202#pragma omp teams203// expected-error@+1 {{integer constant expression}}204#pragma omp distribute parallel for simd safelen(foo())205  for (i = 0; i < 16; ++i)206    ;207#pragma omp target208#pragma omp teams209// expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}210#pragma omp distribute parallel for simd safelen(-5)211  for (i = 0; i < 16; ++i)212    ;213#pragma omp target214#pragma omp teams215// expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}216#pragma omp distribute parallel for simd safelen(0)217  for (i = 0; i < 16; ++i)218    ;219#pragma omp target220#pragma omp teams221// expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}222#pragma omp distribute parallel for simd safelen(5 - 5)223  for (i = 0; i < 16; ++i)224    ;225}226 227void test_simdlen(void) {228  int i;229#pragma omp target230#pragma omp teams231// expected-error@+1 {{expected '('}}232#pragma omp distribute parallel for simd simdlen233  for (i = 0; i < 16; ++i)234    ;235#pragma omp target236#pragma omp teams237// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}238#pragma omp distribute parallel for simd simdlen(239  for (i = 0; i < 16; ++i)240    ;241#pragma omp target242#pragma omp teams243// expected-error@+1 {{expected expression}}244#pragma omp distribute parallel for simd simdlen()245  for (i = 0; i < 16; ++i)246    ;247#pragma omp target248#pragma omp teams249// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}250#pragma omp distribute parallel for simd simdlen(,251  for (i = 0; i < 16; ++i)252    ;253#pragma omp target254#pragma omp teams255// expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}256#pragma omp distribute parallel for simd simdlen(, )257  for (i = 0; i < 16; ++i)258    ;259#pragma omp target260#pragma omp teams261// expected-warning@+2 {{extra tokens at the end of '#pragma omp distribute parallel for simd' are ignored}}262// expected-error@+1 {{expected '('}}263#pragma omp distribute parallel for simd simdlen 4)264  for (i = 0; i < 16; ++i)265    ;266#pragma omp target267#pragma omp teams268// expected-error@+2 {{expected ')'}}269// expected-note@+1 {{to match this '('}}270#pragma omp distribute parallel for simd simdlen(4271  for (i = 0; i < 16; ++i)272    ;273#pragma omp target274#pragma omp teams275// expected-error@+2 {{expected ')'}}276// expected-note@+1 {{to match this '('}}277#pragma omp distribute parallel for simd simdlen(4,278  for (i = 0; i < 16; ++i)279    ;280#pragma omp target281#pragma omp teams282// expected-error@+2 {{expected ')'}}283// expected-note@+1 {{to match this '('}}284#pragma omp distribute parallel for simd simdlen(4, )285  for (i = 0; i < 16; ++i)286    ;287#pragma omp target288#pragma omp teams289#pragma omp distribute parallel for simd simdlen(4)290  for (i = 0; i < 16; ++i)291    ;292#pragma omp target293#pragma omp teams294// expected-error@+2 {{expected ')'}}295// expected-note@+1 {{to match this '('}}296#pragma omp distribute parallel for simd simdlen(4 4)297  for (i = 0; i < 16; ++i)298    ;299#pragma omp target300#pragma omp teams301// expected-error@+2 {{expected ')'}}302// expected-note@+1 {{to match this '('}}303#pragma omp distribute parallel for simd simdlen(4, , 4)304  for (i = 0; i < 16; ++i)305    ;306#pragma omp target307#pragma omp teams308#pragma omp distribute parallel for simd simdlen(4)309  for (i = 0; i < 16; ++i)310    ;311#pragma omp target312#pragma omp teams313// expected-error@+2 {{expected ')'}}314// expected-note@+1 {{to match this '('}}315#pragma omp distribute parallel for simd simdlen(4, 8)316  for (i = 0; i < 16; ++i)317    ;318#pragma omp target319#pragma omp teams320// expected-error@+1 {{integer constant expression}}321#pragma omp distribute parallel for simd simdlen(2.5)322  for (i = 0; i < 16; ++i)323    ;324#pragma omp target325#pragma omp teams326// expected-error@+1 {{integer constant expression}}327#pragma omp distribute parallel for simd simdlen(foo())328  for (i = 0; i < 16; ++i)329    ;330#pragma omp target331#pragma omp teams332// expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}333#pragma omp distribute parallel for simd simdlen(-5)334  for (i = 0; i < 16; ++i)335    ;336#pragma omp target337#pragma omp teams338// expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}339#pragma omp distribute parallel for simd simdlen(0)340  for (i = 0; i < 16; ++i)341    ;342#pragma omp target343#pragma omp teams344// expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}345#pragma omp distribute parallel for simd simdlen(5 - 5)346  for (i = 0; i < 16; ++i)347    ;348}349 350void test_safelen_simdlen(void) {351  int i;352#pragma omp target353#pragma omp teams354// expected-error@+1 {{the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter}}355#pragma omp distribute parallel for simd simdlen(6) safelen(5)356  for (i = 0; i < 16; ++i)357    ;358 359#pragma omp target360#pragma omp teams361// expected-error@+1 {{the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter}}362#pragma omp distribute parallel for simd safelen(5) simdlen(6)363  for (i = 0; i < 16; ++i)364    ;365}366 367void test_collapse(void) {368  int i;369#pragma omp target370#pragma omp teams371// expected-error@+1 {{expected '('}}372#pragma omp distribute parallel for simd collapse373  for (i = 0; i < 16; ++i)374    ;375#pragma omp target376#pragma omp teams377// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}378#pragma omp distribute parallel for simd collapse(379  for (i = 0; i < 16; ++i)380    ;381#pragma omp target382#pragma omp teams383// expected-error@+1 {{expected expression}}384#pragma omp distribute parallel for simd collapse()385  for (i = 0; i < 16; ++i)386    ;387#pragma omp target388#pragma omp teams389// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}390#pragma omp distribute parallel for simd collapse(,391  for (i = 0; i < 16; ++i)392    ;393#pragma omp target394#pragma omp teams395// expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}396#pragma omp distribute parallel for simd collapse(, )397  for (i = 0; i < 16; ++i)398    ;399#pragma omp target400#pragma omp teams401// expected-warning@+2 {{extra tokens at the end of '#pragma omp distribute parallel for simd' are ignored}}402// expected-error@+1 {{expected '('}}403#pragma omp distribute parallel for simd collapse 4)404  for (i = 0; i < 16; ++i)405    ;406#pragma omp target407#pragma omp teams408// expected-error@+2 {{expected ')'}}409// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}410#pragma omp distribute parallel for simd collapse(4411  for (i = 0; i < 16; ++i)412    ; // expected-error {{expected 4 for loops after '#pragma omp distribute parallel for simd', but found only 1}}413#pragma omp target414#pragma omp teams415// expected-error@+2 {{expected ')'}}416// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}417#pragma omp distribute parallel for simd collapse(4,418  for (i = 0; i < 16; ++i)419    ; // expected-error {{expected 4 for loops after '#pragma omp distribute parallel for simd', but found only 1}}420#pragma omp target421#pragma omp teams422// expected-error@+2 {{expected ')'}}423// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}424#pragma omp distribute parallel for simd collapse(4, )425  for (i = 0; i < 16; ++i)426    ; // expected-error {{expected 4 for loops after '#pragma omp distribute parallel for simd', but found only 1}}427#pragma omp target428#pragma omp teams429// expected-note@+1 {{as specified in 'collapse' clause}}430#pragma omp distribute parallel for simd collapse(4)431  for (i = 0; i < 16; ++i)432    ; // expected-error {{expected 4 for loops after '#pragma omp distribute parallel for simd', but found only 1}}433#pragma omp target434#pragma omp teams435// expected-error@+2 {{expected ')'}}436// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}437#pragma omp distribute parallel for simd collapse(4 4)438  for (i = 0; i < 16; ++i)439    ; // expected-error {{expected 4 for loops after '#pragma omp distribute parallel for simd', but found only 1}}440#pragma omp target441#pragma omp teams442// expected-error@+2 {{expected ')'}}443// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}444#pragma omp distribute parallel for simd collapse(4, , 4)445  for (i = 0; i < 16; ++i)446    ; // expected-error {{expected 4 for loops after '#pragma omp distribute parallel for simd', but found only 1}}447#pragma omp target448#pragma omp teams449#pragma omp distribute parallel for simd collapse(4)450  for (int i1 = 0; i1 < 16; ++i1)451    for (int i2 = 0; i2 < 16; ++i2)452      for (int i3 = 0; i3 < 16; ++i3)453        for (int i4 = 0; i4 < 16; ++i4)454          foo();455#pragma omp target456#pragma omp teams457// expected-error@+2 {{expected ')'}}458// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}459#pragma omp distribute parallel for simd collapse(4, 8)460  for (i = 0; i < 16; ++i)461    ; // expected-error {{expected 4 for loops after '#pragma omp distribute parallel for simd', but found only 1}}462#pragma omp target463#pragma omp teams464// expected-error@+1 {{integer constant expression}}465#pragma omp distribute parallel for simd collapse(2.5)466  for (i = 0; i < 16; ++i)467    ;468#pragma omp target469#pragma omp teams470// expected-error@+1 {{integer constant expression}}471#pragma omp distribute parallel for simd collapse(foo())472  for (i = 0; i < 16; ++i)473    ;474#pragma omp target475#pragma omp teams476// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}477#pragma omp distribute parallel for simd collapse(-5)478  for (i = 0; i < 16; ++i)479    ;480#pragma omp target481#pragma omp teams482// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}483#pragma omp distribute parallel for simd collapse(0)484  for (i = 0; i < 16; ++i)485    ;486#pragma omp target487#pragma omp teams488// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}489#pragma omp distribute parallel for simd collapse(5 - 5)490  for (i = 0; i < 16; ++i)491    ;492#pragma omp target493#pragma omp teams494#pragma omp distribute parallel for simd collapse(2)495  for (i = 0; i < 16; ++i)496    for (int j = 0; j < 16; ++j)497// expected-error@+1 {{OpenMP constructs may not be nested inside a simd region}}498#pragma omp distribute parallel for simd reduction(+ : i, j)499      for (int k = 0; k < 16; ++k)500        i += j;501}502 503void test_linear(void) {504  int i;505#pragma omp target506#pragma omp teams507// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}508#pragma omp distribute parallel for simd linear(509  for (i = 0; i < 16; ++i)510    ;511#pragma omp target512#pragma omp teams513// expected-error@+2 {{expected expression}}514// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}515#pragma omp distribute parallel for simd linear(,516  for (i = 0; i < 16; ++i)517    ;518#pragma omp target519#pragma omp teams520// expected-error@+2 {{expected expression}}521// expected-error@+1 {{expected expression}}522#pragma omp distribute parallel for simd linear(, )523  for (i = 0; i < 16; ++i)524    ;525#pragma omp target526#pragma omp teams527// expected-error@+1 {{expected expression}}528#pragma omp distribute parallel for simd linear()529  for (i = 0; i < 16; ++i)530    ;531#pragma omp target532#pragma omp teams533// expected-error@+1 {{expected expression}}534#pragma omp distribute parallel for simd linear(int)535  for (i = 0; i < 16; ++i)536    ;537#pragma omp target538#pragma omp teams539// expected-error@+1 {{expected variable name}}540#pragma omp distribute parallel for simd linear(0)541  for (i = 0; i < 16; ++i)542    ;543#pragma omp target544#pragma omp teams545// expected-error@+1 {{use of undeclared identifier 'x'}}546#pragma omp distribute parallel for simd linear(x)547  for (i = 0; i < 16; ++i)548    ;549#pragma omp target550#pragma omp teams551// expected-error@+2 {{use of undeclared identifier 'x'}}552// expected-error@+1 {{use of undeclared identifier 'y'}}553#pragma omp distribute parallel for simd linear(x, y)554  for (i = 0; i < 16; ++i)555    ;556#pragma omp target557#pragma omp teams558// expected-error@+3 {{use of undeclared identifier 'x'}}559// expected-error@+2 {{use of undeclared identifier 'y'}}560// expected-error@+1 {{use of undeclared identifier 'z'}}561#pragma omp distribute parallel for simd linear(x, y, z)562  for (i = 0; i < 16; ++i)563    ;564}565 566void test_aligned(void) {567  int i;568#pragma omp target569#pragma omp teams570// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}571#pragma omp distribute parallel for simd aligned(572  for (i = 0; i < 16; ++i)573    ;574// expected-error@+2 {{expected expression}}575// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}576#pragma omp distribute parallel for simd aligned(,577  for (i = 0; i < 16; ++i)578    ;579#pragma omp target580#pragma omp teams581// expected-error@+2 {{expected expression}}582// expected-error@+1 {{expected expression}}583#pragma omp distribute parallel for simd aligned(, )584  for (i = 0; i < 16; ++i)585    ;586#pragma omp target587#pragma omp teams588// expected-error@+1 {{expected expression}}589#pragma omp distribute parallel for simd aligned()590  for (i = 0; i < 16; ++i)591    ;592#pragma omp target593#pragma omp teams594// expected-error@+1 {{expected expression}}595#pragma omp distribute parallel for simd aligned(int)596  for (i = 0; i < 16; ++i)597    ;598#pragma omp target599#pragma omp teams600// expected-error@+1 {{expected variable name}}601#pragma omp distribute parallel for simd aligned(0)602  for (i = 0; i < 16; ++i)603    ;604#pragma omp target605#pragma omp teams606// expected-error@+1 {{use of undeclared identifier 'x'}}607#pragma omp distribute parallel for simd aligned(x)608  for (i = 0; i < 16; ++i)609    ;610#pragma omp target611#pragma omp teams612// expected-error@+2 {{use of undeclared identifier 'x'}}613// expected-error@+1 {{use of undeclared identifier 'y'}}614#pragma omp distribute parallel for simd aligned(x, y)615  for (i = 0; i < 16; ++i)616    ;617#pragma omp target618#pragma omp teams619// expected-error@+3 {{use of undeclared identifier 'x'}}620// expected-error@+2 {{use of undeclared identifier 'y'}}621// expected-error@+1 {{use of undeclared identifier 'z'}}622#pragma omp distribute parallel for simd aligned(x, y, z)623  for (i = 0; i < 16; ++i)624    ;625 626  int *x, y, z[25]; // expected-note 4 {{'y' defined here}}627#pragma omp target628#pragma omp teams629#pragma omp distribute parallel for simd aligned(x)630  for (i = 0; i < 16; ++i)631    ;632#pragma omp target633#pragma omp teams634#pragma omp distribute parallel for simd aligned(z)635  for (i = 0; i < 16; ++i)636    ;637#pragma omp target638#pragma omp teams639// expected-error@+1 {{expected expression}}640#pragma omp distribute parallel for simd aligned(x :)641  for (i = 0; i < 16; ++i)642    ;643#pragma omp target644#pragma omp teams645// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}646#pragma omp distribute parallel for simd aligned(x :, )647  for (i = 0; i < 16; ++i)648    ;649#pragma omp target650#pragma omp teams651#pragma omp distribute parallel for simd aligned(x : 1)652  for (i = 0; i < 16; ++i)653    ;654#pragma omp target655#pragma omp teams656#pragma omp distribute parallel for simd aligned(x : 2 * 2)657  for (i = 0; i < 16; ++i)658    ;659#pragma omp target660#pragma omp teams661// expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}662#pragma omp distribute parallel for simd aligned(x : 1, y)663  for (i = 0; i < 16; ++i)664    ;665#pragma omp target666#pragma omp teams667// expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}668#pragma omp distribute parallel for simd aligned(x : 1, y, z : 1)669  for (i = 0; i < 16; ++i)670    ;671 672#pragma omp target673#pragma omp teams674// expected-error@+1 {{argument of aligned clause should be array or pointer, not 'int'}}675#pragma omp distribute parallel for simd aligned(x, y)676  for (i = 0; i < 16; ++i)677    ;678#pragma omp target679#pragma omp teams680// expected-error@+1 {{argument of aligned clause should be array or pointer, not 'int'}}681#pragma omp distribute parallel for simd aligned(x, y, z)682  for (i = 0; i < 16; ++i)683    ;684 685#pragma omp target686#pragma omp teams687// expected-note@+2 {{defined as aligned}}688// expected-error@+1 {{a variable cannot appear in more than one aligned clause}}689#pragma omp distribute parallel for simd aligned(x) aligned(z, x)690  for (i = 0; i < 16; ++i)691    ;692 693#pragma omp target694#pragma omp teams695// expected-note@+3 {{defined as aligned}}696// expected-error@+2 {{a variable cannot appear in more than one aligned clause}}697// expected-error@+1 2 {{argument of aligned clause should be array or pointer, not 'int'}}698#pragma omp distribute parallel for simd aligned(x, y, z) aligned(y, z)699  for (i = 0; i < 16; ++i)700    ;701}702 703 704void test_private(void) {705  int i;706#pragma omp target707#pragma omp teams708// expected-error@+2 {{expected expression}}709// expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}710#pragma omp distribute parallel for simd private(711  for (i = 0; i < 16; ++i)712    ;713#pragma omp target714#pragma omp teams715// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}716// expected-error@+1 2 {{expected expression}}717#pragma omp distribute parallel for simd private(,718  for (i = 0; i < 16; ++i)719    ;720#pragma omp target721#pragma omp teams722// expected-error@+1 2 {{expected expression}}723#pragma omp distribute parallel for simd private(, )724  for (i = 0; i < 16; ++i)725    ;726#pragma omp target727#pragma omp teams728// expected-error@+1 {{expected expression}}729#pragma omp distribute parallel for simd private()730  for (i = 0; i < 16; ++i)731    ;732#pragma omp target733#pragma omp teams734// expected-error@+1 {{expected expression}}735#pragma omp distribute parallel for simd private(int)736  for (i = 0; i < 16; ++i)737    ;738#pragma omp target739#pragma omp teams740// expected-error@+1 {{expected variable name}}741#pragma omp distribute parallel for simd private(0)742  for (i = 0; i < 16; ++i)743    ;744 745  int x, y, z;746#pragma omp target747#pragma omp teams748#pragma omp distribute parallel for simd private(x)749  for (i = 0; i < 16; ++i)750    ;751#pragma omp target752#pragma omp teams753#pragma omp distribute parallel for simd private(x, y)754  for (i = 0; i < 16; ++i)755    ;756#pragma omp target757#pragma omp teams758#pragma omp distribute parallel for simd private(x, y, z)759  for (i = 0; i < 16; ++i) {760    x = y * i + z;761  }762}763 764void test_lastprivate(void) {765  int i;766#pragma omp target767#pragma omp teams768// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}769// expected-error@+1 {{expected expression}}770#pragma omp distribute parallel for simd lastprivate(771  for (i = 0; i < 16; ++i)772    ;773 774#pragma omp target775#pragma omp teams776// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}777// expected-error@+1 2 {{expected expression}}778#pragma omp distribute parallel for simd lastprivate(,779  for (i = 0; i < 16; ++i)780    ;781#pragma omp target782#pragma omp teams783// expected-error@+1 2 {{expected expression}}784#pragma omp distribute parallel for simd lastprivate(, )785  for (i = 0; i < 16; ++i)786    ;787#pragma omp target788#pragma omp teams789// expected-error@+1 {{expected expression}}790#pragma omp distribute parallel for simd lastprivate()791  for (i = 0; i < 16; ++i)792    ;793#pragma omp target794#pragma omp teams795// expected-error@+1 {{expected expression}}796#pragma omp distribute parallel for simd lastprivate(int)797  for (i = 0; i < 16; ++i)798    ;799#pragma omp target800#pragma omp teams801// expected-error@+1 {{expected variable name}}802#pragma omp distribute parallel for simd lastprivate(0)803  for (i = 0; i < 16; ++i)804    ;805 806  int x, y, z;807#pragma omp target808#pragma omp teams809#pragma omp distribute parallel for simd lastprivate(x)810  for (i = 0; i < 16; ++i)811    ;812#pragma omp target813#pragma omp teams814#pragma omp distribute parallel for simd lastprivate(x, y)815  for (i = 0; i < 16; ++i)816    ;817#pragma omp target818#pragma omp teams819#pragma omp distribute parallel for simd lastprivate(x, y, z)820  for (i = 0; i < 16; ++i)821    ;822}823 824void test_firstprivate(void) {825  int i;826#pragma omp target827#pragma omp teams828// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}829// expected-error@+1 {{expected expression}}830#pragma omp distribute parallel for simd firstprivate(831  for (i = 0; i < 16; ++i)832    ;833 834#pragma omp target835#pragma omp teams836// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}837// expected-error@+1 2 {{expected expression}}838#pragma omp distribute parallel for simd firstprivate(,839  for (i = 0; i < 16; ++i)840    ;841#pragma omp target842#pragma omp teams843// expected-error@+1 2 {{expected expression}}844#pragma omp distribute parallel for simd firstprivate(, )845  for (i = 0; i < 16; ++i)846    ;847#pragma omp target848#pragma omp teams849// expected-error@+1 {{expected expression}}850#pragma omp distribute parallel for simd firstprivate()851  for (i = 0; i < 16; ++i)852    ;853#pragma omp target854#pragma omp teams855// expected-error@+1 {{expected expression}}856#pragma omp distribute parallel for simd firstprivate(int)857  for (i = 0; i < 16; ++i)858    ;859#pragma omp target860#pragma omp teams861// expected-error@+1 {{expected variable name}}862#pragma omp distribute parallel for simd firstprivate(0)863  for (i = 0; i < 16; ++i)864    ;865 866  int x, y, z;867// expected-error@+3 {{lastprivate variable cannot be firstprivate}} expected-note@+3 {{defined as lastprivate}}868#pragma omp target869#pragma omp teams870#pragma omp distribute parallel for simd lastprivate(x) firstprivate(x)871  for (i = 0; i < 16; ++i)872    ;873// expected-error@+3 2 {{lastprivate variable cannot be firstprivate}} expected-note@+3 2 {{defined as lastprivate}}874#pragma omp target875#pragma omp teams876#pragma omp distribute parallel for simd lastprivate(x, y) firstprivate(x, y)877  for (i = 0; i < 16; ++i)878    ;879// expected-error@+3 3 {{lastprivate variable cannot be firstprivate}} expected-note@+3 3 {{defined as lastprivate}}880#pragma omp target881#pragma omp teams882#pragma omp distribute parallel for simd lastprivate(x, y, z) firstprivate(x, y, z)883  for (i = 0; i < 16; ++i)884    ;885}886 887void test_loop_messages(void) {888  float a[100], b[100], c[100];889#pragma omp target890#pragma omp teams891// expected-error@+2 {{variable must be of integer or pointer type}}892#pragma omp distribute parallel for simd893  for (float fi = 0; fi < 10.0; fi++) {894    c[(int)fi] = a[(int)fi] + b[(int)fi];895  }896#pragma omp target897#pragma omp teams898// expected-error@+2 {{variable must be of integer or pointer type}}899#pragma omp distribute parallel for simd900  for (double fi = 0; fi < 10.0; fi++) {901    c[(int)fi] = a[(int)fi] + b[(int)fi];902  }903}904 905void test_nontemporal(void) {906  int i;907// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel for simd'}} expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}908#pragma omp distribute parallel for simd nontemporal(909  for (i = 0; i < 16; ++i)910    ;911// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel for simd'}} expected-error@+1 2 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}912#pragma omp distribute parallel for simd nontemporal(,913  for (i = 0; i < 16; ++i)914    ;915// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel for simd'}} expected-error@+1 2 {{expected expression}}916#pragma omp distribute parallel for simd nontemporal(, )917  for (i = 0; i < 16; ++i)918    ;919// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel for simd'}} expected-error@+1 {{expected expression}}920#pragma omp distribute parallel for simd nontemporal()921  for (i = 0; i < 16; ++i)922    ;923// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel for simd'}} expected-error@+1 {{expected expression}}924#pragma omp distribute parallel for simd nontemporal(int)925  for (i = 0; i < 16; ++i)926    ;927// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel for simd'}} omp50-error@+1 {{expected variable name}} omp51-error@+1 {{expected variable name}}928#pragma omp distribute parallel for simd nontemporal(0)929  for (i = 0; i < 16; ++i)930    ;931// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel for simd'}} expected-error@+1 {{use of undeclared identifier 'x'}}932#pragma omp distribute parallel for simd nontemporal(x)933  for (i = 0; i < 16; ++i)934    ;935// expected-error@+2 {{use of undeclared identifier 'x'}}936// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel for simd'}} expected-error@+1 {{use of undeclared identifier 'y'}}937#pragma omp distribute parallel for simd nontemporal(x, y)938  for (i = 0; i < 16; ++i)939    ;940// expected-error@+3 {{use of undeclared identifier 'x'}}941// expected-error@+2 {{use of undeclared identifier 'y'}}942// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel for simd'}} expected-error@+1 {{use of undeclared identifier 'z'}}943#pragma omp distribute parallel for simd nontemporal(x, y, z)944  for (i = 0; i < 16; ++i)945    ;946 947  int x, y;948// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel for simd'}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}949#pragma omp distribute parallel for simd nontemporal(x :)950  for (i = 0; i < 16; ++i)951    ;952// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel for simd'}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}}953#pragma omp distribute parallel for simd nontemporal(x :, )954  for (i = 0; i < 16; ++i)955    ;956 957// omp51-note@+3 {{defined as nontemporal}}958// omp50-note@+2 {{defined as nontemporal}}959// omp45-error@+1 2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel 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}}960#pragma omp distribute parallel for simd nontemporal(x) nontemporal(x)961  for (i = 0; i < 16; ++i)962    ;963 964// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel for simd'}}965#pragma omp distribute parallel for simd private(x) nontemporal(x)966  for (i = 0; i < 16; ++i)967    ;968 969// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel for simd'}}970#pragma omp distribute parallel for simd nontemporal(x) private(x)971  for (i = 0; i < 16; ++i)972    ;973 974// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel for simd'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}}975#pragma omp distribute parallel for simd nontemporal(x, y : 0)976  for (i = 0; i < 16; ++i)977    ;978 979// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel for simd'}}980#pragma omp distribute parallel for simd nontemporal(x) lastprivate(x)981  for (i = 0; i < 16; ++i)982    ;983 984// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp distribute parallel for simd'}}985#pragma omp distribute parallel for simd lastprivate(x) nontemporal(x)986  for (i = 0; i < 16; ++i)987    ;988#pragma omp distribute parallel for simd order // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute parallel for simd'}} expected-error {{expected '(' after 'order'}}989  for (int i = 0; i < 10; ++i)990    ;991#pragma omp distribute parallel for simd order( // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute parallel 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'}}992  for (int i = 0; i < 10; ++i)993    ;994#pragma omp distribute parallel for simd order(none // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute parallel 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'}}995  for (int i = 0; i < 10; ++i)996    ;997#pragma omp distribute parallel for simd order(concurrent // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute parallel for simd'}} expected-error {{expected ')'}} expected-note {{to match this '('}}998  for (int i = 0; i < 10; ++i)999    ;1000#pragma omp distribute parallel for simd order(concurrent) // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute parallel for simd'}}1001  for (int i = 0; i < 10; ++i)1002    ;1003#pragma omp distribute parallel for simd order(unconstrained:) // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute parallel for simd'}} omp50-error {{expected 'concurrent' in OpenMP clause 'order'}} omp51-error {{expected 'concurrent' in OpenMP clause 'order'}}1004  for (int i = 0; i < 10; ++i)1005    ;1006#pragma omp distribute parallel for simd order(reproducible:concurrent // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute parallel for simd'}} expected-error {{expected ')'}} expected-note {{to match this '('}} omp50-error {{expected 'concurrent' in OpenMP clause 'order'}}1007  for (int i = 0; i < 10; ++i)1008    ;1009#pragma omp distribute parallel for simd order(reproducible:concurrent) // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute parallel for simd'}} omp50-error {{expected 'concurrent' in OpenMP clause 'order'}}1010  for (int i = 0; i < 10; ++i)1011    ;1012#pragma omp distribute parallel for simd order(unconstrained:concurrent) // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute parallel for simd'}} omp50-error {{expected 'concurrent' in OpenMP clause 'order'}}1013  for (int i = 0; i < 10; ++i)1014    ;1015#pragma omp distribute parallel for simd order(concurrent) order(concurrent) // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute parallel for simd'}} omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp distribute parallel for simd'}} omp51-error {{directive '#pragma omp distribute parallel for simd' cannot contain more than one 'order' clause}}1016  for (int i = 0; i < 10; ++i)1017    ;1018}1019 1020