brintos

brintos / llvm-project-archived public Read only

0
0
Text · 22.6 KiB · 87dbe8c Raw
585 lines · c
1// RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45 %s -Wuninitialized2// RUN: %clang_cc1 -fsyntax-only -fopenmp -verify=expected,omp51 %s -Wuninitialized3 4// RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=45 -verify=expected,omp45 %s -Wuninitialized5// RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -verify=expected,omp51 %s -Wuninitialized6 7// expected-error@+1 {{unexpected OpenMP directive '#pragma omp target parallel for simd'}}8#pragma omp target parallel for simd9 10// expected-error@+1 {{unexpected OpenMP directive '#pragma omp target parallel for simd'}}11#pragma omp target parallel for simd foo12 13void test_no_clause(void) {14  int i;15#pragma omp target parallel for simd16  for (i = 0; i < 16; ++i)17    ;18 19// expected-error@+2 {{statement after '#pragma omp target parallel for simd' must be a for loop}}20#pragma omp target parallel for simd21  ++i;22}23 24void test_branch_protected_scope(void) {25  int i = 0;26L1:27  ++i;28 29  int x[24];30 31#pragma omp target parallel for simd32  for (i = 0; i < 16; ++i) {33    if (i == 5)34      goto L1; // expected-error {{use of undeclared label 'L1'}}35    else if (i == 6)36      return; // expected-error {{cannot return from OpenMP region}}37    else if (i == 7)38      goto L2;39    else if (i == 8) {40    L2:41      x[i]++;42    }43  }44 45  if (x[0] == 0)46    goto L2; // expected-error {{use of undeclared label 'L2'}}47  else if (x[1] == 1)48    goto L1;49}50 51void test_invalid_clause(void) {52  int i;53// expected-warning@+1 {{extra tokens at the end of '#pragma omp target parallel for simd' are ignored}}54#pragma omp target parallel for simd foo bar55  for (i = 0; i < 16; ++i)56    ;57}58 59void test_non_identifiers(void) {60  int i, x;61 62// expected-warning@+1 {{extra tokens at the end of '#pragma omp target parallel for simd' are ignored}}63#pragma omp target parallel for simd;64  for (i = 0; i < 16; ++i)65    ;66 67// expected-warning@+1 {{extra tokens at the end of '#pragma omp target parallel for simd' are ignored}}68#pragma omp target parallel for simd private(x);69  for (i = 0; i < 16; ++i)70    ;71 72// expected-warning@+1 {{extra tokens at the end of '#pragma omp target parallel for simd' are ignored}}73#pragma omp target parallel for simd, private(x);74  for (i = 0; i < 16; ++i)75    ;76}77 78extern int foo(void);79 80void test_collapse(void) {81  int i;82// expected-error@+1 {{expected '('}}83#pragma omp target parallel for simd collapse84  for (i = 0; i < 16; ++i)85    ;86// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}87#pragma omp target parallel for simd collapse(88  for (i = 0; i < 16; ++i)89    ;90// expected-error@+1 {{expected expression}}91#pragma omp target parallel for simd collapse()92  for (i = 0; i < 16; ++i)93    ;94// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}95#pragma omp target parallel for simd collapse(,96  for (i = 0; i < 16; ++i)97    ;98// expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}99#pragma omp target parallel for simd collapse(, )100  for (i = 0; i < 16; ++i)101    ;102// expected-warning@+2 {{extra tokens at the end of '#pragma omp target parallel for simd' are ignored}}103// expected-error@+1 {{expected '('}}104#pragma omp target parallel for simd collapse 4)105  for (i = 0; i < 16; ++i)106    ;107// expected-error@+2 {{expected ')'}}108// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}109#pragma omp target parallel for simd collapse(4110  for (i = 0; i < 16; ++i)111    ; // expected-error {{expected 4 for loops after '#pragma omp target parallel for simd', but found only 1}}112// expected-error@+2 {{expected ')'}}113// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}114#pragma omp target parallel for simd collapse(4,115  for (i = 0; i < 16; ++i)116    ; // expected-error {{expected 4 for loops after '#pragma omp target parallel for simd', but found only 1}}117// expected-error@+2 {{expected ')'}}118// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}119#pragma omp target parallel for simd collapse(4, )120  for (i = 0; i < 16; ++i)121    ; // expected-error {{expected 4 for loops after '#pragma omp target parallel for simd', but found only 1}}122// expected-note@+1 {{as specified in 'collapse' clause}}123#pragma omp target parallel for simd collapse(4)124  for (i = 0; i < 16; ++i)125    ; // expected-error {{expected 4 for loops after '#pragma omp target parallel for simd', but found only 1}}126// expected-error@+2 {{expected ')'}}127// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}128#pragma omp target parallel for simd collapse(4 4)129  for (i = 0; i < 16; ++i)130    ; // expected-error {{expected 4 for loops after '#pragma omp target parallel for simd', but found only 1}}131// expected-error@+2 {{expected ')'}}132// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}133#pragma omp target parallel for simd collapse(4, , 4)134  for (i = 0; i < 16; ++i)135    ; // expected-error {{expected 4 for loops after '#pragma omp target parallel for simd', but found only 1}}136#pragma omp target parallel for simd collapse(4)137  for (int i1 = 0; i1 < 16; ++i1)138    for (int i2 = 0; i2 < 16; ++i2)139      for (int i3 = 0; i3 < 16; ++i3)140        for (int i4 = 0; i4 < 16; ++i4)141          foo();142// expected-error@+2 {{expected ')'}}143// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}144#pragma omp target parallel for simd collapse(4, 8)145  for (i = 0; i < 16; ++i)146    ; // expected-error {{expected 4 for loops after '#pragma omp target parallel for simd', but found only 1}}147// expected-error@+1 {{integer constant expression}}148#pragma omp target parallel for simd collapse(2.5)149  for (i = 0; i < 16; ++i)150    ;151// expected-error@+1 {{integer constant expression}}152#pragma omp target parallel for simd collapse(foo())153  for (i = 0; i < 16; ++i)154    ;155// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}156#pragma omp target parallel for simd collapse(-5)157  for (i = 0; i < 16; ++i)158    ;159// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}160#pragma omp target parallel for simd collapse(0)161  for (i = 0; i < 16; ++i)162    ;163// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}164#pragma omp target parallel for simd collapse(5 - 5)165  for (i = 0; i < 16; ++i)166    ;167// expected-note@+1 {{defined as firstprivate}}168#pragma omp target parallel for simd collapse(2) firstprivate(i) // expected-note {{defined as firstprivate}}169  for (i = 0; i < 16; ++i) // expected-error {{loop iteration variable in the associated loop of 'omp target parallel for simd' directive may not be firstprivate, predetermined as lastprivate}}170// expected-note@+1 {{variable with automatic storage duration is predetermined as private; perhaps you forget to enclose 'omp for' directive into a parallel or another task region?}}171    for (int j = 0; j < 16; ++j)172// expected-error@+2 2 {{reduction variable must be shared}}173// expected-error@+1 {{OpenMP constructs may not be nested inside a simd region}}174#pragma omp for reduction(+ : i, j)175      for (int k = 0; k < 16; ++k)176        i += j;177}178 179void test_private(void) {180  int i;181// expected-error@+2 {{expected expression}}182// expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}183#pragma omp target parallel for simd private(184  for (i = 0; i < 16; ++i)185    ;186// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}187// expected-error@+1 2 {{expected expression}}188#pragma omp target parallel for simd private(,189  for (i = 0; i < 16; ++i)190    ;191// expected-error@+1 2 {{expected expression}}192#pragma omp target parallel for simd private(, )193  for (i = 0; i < 16; ++i)194    ;195// expected-error@+1 {{expected expression}}196#pragma omp target parallel for simd private()197  for (i = 0; i < 16; ++i)198    ;199// expected-error@+1 {{expected expression}}200#pragma omp target parallel for simd private(int)201  for (i = 0; i < 16; ++i)202    ;203// expected-error@+1 {{expected variable name}}204#pragma omp target parallel for simd private(0)205  for (i = 0; i < 16; ++i)206    ;207 208  int x, y, z;209#pragma omp target parallel for simd private(x)210  for (i = 0; i < 16; ++i)211    ;212#pragma omp target parallel for simd private(x, y)213  for (i = 0; i < 16; ++i)214    ;215#pragma omp target parallel for simd private(x, y, z)216  for (i = 0; i < 16; ++i) {217    x = y * i + z;218  }219}220 221void test_lastprivate(void) {222  int i;223// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}224// expected-error@+1 {{expected expression}}225#pragma omp target parallel for simd lastprivate(226  for (i = 0; i < 16; ++i)227    ;228 229// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}230// expected-error@+1 2 {{expected expression}}231#pragma omp target parallel for simd lastprivate(,232  for (i = 0; i < 16; ++i)233    ;234// expected-error@+1 2 {{expected expression}}235#pragma omp target parallel for simd lastprivate(, )236  for (i = 0; i < 16; ++i)237    ;238// expected-error@+1 {{expected expression}}239#pragma omp target parallel for simd lastprivate()240  for (i = 0; i < 16; ++i)241    ;242// expected-error@+1 {{expected expression}}243#pragma omp target parallel for simd lastprivate(int)244  for (i = 0; i < 16; ++i)245    ;246// expected-error@+1 {{expected variable name}}247#pragma omp target parallel for simd lastprivate(0)248  for (i = 0; i < 16; ++i)249    ;250 251  int x, y, z;252#pragma omp target parallel for simd lastprivate(x)253  for (i = 0; i < 16; ++i)254    ;255#pragma omp target parallel for simd lastprivate(x, y)256  for (i = 0; i < 16; ++i)257    ;258#pragma omp target parallel for simd lastprivate(x, y, z)259  for (i = 0; i < 16; ++i)260    ;261}262 263void test_firstprivate(void) {264  int i;265// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}266// expected-error@+1 {{expected expression}}267#pragma omp target parallel for simd firstprivate(268  for (i = 0; i < 16; ++i)269    ;270 271// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}272// expected-error@+1 2 {{expected expression}}273#pragma omp target parallel for simd firstprivate(,274  for (i = 0; i < 16; ++i)275    ;276// expected-error@+1 2 {{expected expression}}277#pragma omp target parallel for simd firstprivate(, )278  for (i = 0; i < 16; ++i)279    ;280// expected-error@+1 {{expected expression}}281#pragma omp target parallel for simd firstprivate()282  for (i = 0; i < 16; ++i)283    ;284// expected-error@+1 {{expected expression}}285#pragma omp target parallel for simd firstprivate(int)286  for (i = 0; i < 16; ++i)287    ;288// expected-error@+1 {{expected variable name}}289#pragma omp target parallel for simd firstprivate(0)290  for (i = 0; i < 16; ++i)291    ;292 293  int x, y, z;294#pragma omp target parallel for simd lastprivate(x) firstprivate(x)295  for (i = 0; i < 16; ++i)296    ;297#pragma omp target parallel for simd lastprivate(x, y) firstprivate(x, y)298  for (i = 0; i < 16; ++i)299    ;300#pragma omp target parallel for simd lastprivate(x, y, z) firstprivate(x, y, z)301  for (i = 0; i < 16; ++i)302    ;303}304 305void test_loop_messages(void) {306  float a[100], b[100], c[100];307// expected-error@+2 {{variable must be of integer or pointer type}}308#pragma omp target parallel for simd309  for (float fi = 0; fi < 10.0; fi++) {310    c[(int)fi] = a[(int)fi] + b[(int)fi];311  }312// expected-error@+2 {{variable must be of integer or pointer type}}313#pragma omp target parallel for simd314  for (double fi = 0; fi < 10.0; fi++) {315    c[(int)fi] = a[(int)fi] + b[(int)fi];316  }317}318 319void test_safelen(void) {320  int i;321// expected-error@+1 {{expected '('}}322#pragma omp target parallel for simd safelen323  for (i = 0; i < 16; ++i)324    ;325// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}326#pragma omp target parallel for simd safelen(327  for (i = 0; i < 16; ++i)328    ;329// expected-error@+1 {{expected expression}}330#pragma omp target parallel for simd safelen()331  for (i = 0; i < 16; ++i)332    ;333// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}334#pragma omp target parallel for simd safelen(,335  for (i = 0; i < 16; ++i)336    ;337// expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}338#pragma omp target parallel for simd safelen(, )339  for (i = 0; i < 16; ++i)340    ;341// expected-warning@+2 {{extra tokens at the end of '#pragma omp target parallel for simd' are ignored}}342// expected-error@+1 {{expected '('}}343#pragma omp target parallel for simd safelen 4)344  for (i = 0; i < 16; ++i)345    ;346// expected-error@+2 {{expected ')'}}347// expected-note@+1 {{to match this '('}}348#pragma omp target parallel for simd safelen(4349  for (i = 0; i < 16; ++i)350    ;351// expected-error@+2 {{expected ')'}}352// expected-note@+1 {{to match this '('}}353#pragma omp target parallel for simd safelen(4,354  for (i = 0; i < 16; ++i)355    ;356// expected-error@+2 {{expected ')'}}357// expected-note@+1 {{to match this '('}}358#pragma omp target parallel for simd safelen(4, )359  for (i = 0; i < 16; ++i)360    ;361#pragma omp target parallel for simd safelen(4)362  for (i = 0; i < 16; ++i)363    ;364// expected-error@+2 {{expected ')'}}365// expected-note@+1 {{to match this '('}}366#pragma omp target parallel for simd safelen(4 4)367  for (i = 0; i < 16; ++i)368    ;369// expected-error@+2 {{expected ')'}}370// expected-note@+1 {{to match this '('}}371#pragma omp target parallel for simd safelen(4, , 4)372  for (i = 0; i < 16; ++i)373    ;374#pragma omp target parallel for simd safelen(4)375  for (i = 0; i < 16; ++i)376    ;377// expected-error@+2 {{expected ')'}}378// expected-note@+1 {{to match this '('}}379#pragma omp target parallel for simd safelen(4, 8)380  for (i = 0; i < 16; ++i)381    ;382// expected-error@+1 {{integer constant expression}}383#pragma omp target parallel for simd safelen(2.5)384  for (i = 0; i < 16; ++i)385    ;386// expected-error@+1 {{integer constant expression}}387#pragma omp target parallel for simd safelen(foo())388  for (i = 0; i < 16; ++i)389    ;390// expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}391#pragma omp target parallel for simd safelen(-5)392  for (i = 0; i < 16; ++i)393    ;394// expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}395#pragma omp target parallel for simd safelen(0)396  for (i = 0; i < 16; ++i)397    ;398// expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}399#pragma omp target parallel for simd safelen(5 - 5)400  for (i = 0; i < 16; ++i)401    ;402}403 404void test_simdlen(void) {405  int i;406// expected-error@+1 {{expected '('}}407#pragma omp target parallel for simd simdlen408  for (i = 0; i < 16; ++i)409    ;410// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}411#pragma omp target parallel for simd simdlen(412  for (i = 0; i < 16; ++i)413    ;414// expected-error@+1 {{expected expression}}415#pragma omp target parallel for simd simdlen()416  for (i = 0; i < 16; ++i)417    ;418// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}419#pragma omp target parallel for simd simdlen(,420  for (i = 0; i < 16; ++i)421    ;422// expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}423#pragma omp target parallel for simd simdlen(, )424  for (i = 0; i < 16; ++i)425    ;426// expected-warning@+2 {{extra tokens at the end of '#pragma omp target parallel for simd' are ignored}}427// expected-error@+1 {{expected '('}}428#pragma omp target parallel for simd simdlen 4)429  for (i = 0; i < 16; ++i)430    ;431// expected-error@+2 {{expected ')'}}432// expected-note@+1 {{to match this '('}}433#pragma omp target parallel for simd simdlen(4434  for (i = 0; i < 16; ++i)435    ;436// expected-error@+2 {{expected ')'}}437// expected-note@+1 {{to match this '('}}438#pragma omp target parallel for simd simdlen(4,439  for (i = 0; i < 16; ++i)440    ;441// expected-error@+2 {{expected ')'}}442// expected-note@+1 {{to match this '('}}443#pragma omp target parallel for simd simdlen(4, )444  for (i = 0; i < 16; ++i)445    ;446#pragma omp target parallel for simd simdlen(4)447  for (i = 0; i < 16; ++i)448    ;449// expected-error@+2 {{expected ')'}}450// expected-note@+1 {{to match this '('}}451#pragma omp target parallel for simd simdlen(4 4)452  for (i = 0; i < 16; ++i)453    ;454// expected-error@+2 {{expected ')'}}455// expected-note@+1 {{to match this '('}}456#pragma omp target parallel for simd simdlen(4, , 4)457  for (i = 0; i < 16; ++i)458    ;459#pragma omp target parallel for simd simdlen(4)460  for (i = 0; i < 16; ++i)461    ;462// expected-error@+2 {{expected ')'}}463// expected-note@+1 {{to match this '('}}464#pragma omp target parallel for simd simdlen(4, 8)465  for (i = 0; i < 16; ++i)466    ;467// expected-error@+1 {{integer constant expression}}468#pragma omp target parallel for simd simdlen(2.5)469  for (i = 0; i < 16; ++i)470    ;471// expected-error@+1 {{integer constant expression}}472#pragma omp target parallel for simd simdlen(foo())473  for (i = 0; i < 16; ++i)474    ;475// expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}476#pragma omp target parallel for simd simdlen(-5)477  for (i = 0; i < 16; ++i)478    ;479// expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}480#pragma omp target parallel for simd simdlen(0)481  for (i = 0; i < 16; ++i)482    ;483// expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}484#pragma omp target parallel for simd simdlen(5 - 5)485  for (i = 0; i < 16; ++i)486    ;487}488 489void test_safelen_simdlen(void) {490  int i;491// expected-error@+1 {{the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter}}492#pragma omp target parallel for simd simdlen(6) safelen(5)493  for (i = 0; i < 16; ++i)494    ;495// expected-error@+1 {{the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter}}496#pragma omp target parallel for simd safelen(5) simdlen(6)497  for (i = 0; i < 16; ++i)498    ;499}500 501void test_nontemporal(void) {502  int i;503// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}504#pragma omp target parallel for simd nontemporal(505  for (i = 0; i < 16; ++i)506    ;507// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 2 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}508#pragma omp target parallel for simd nontemporal(,509  for (i = 0; i < 16; ++i)510    ;511// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 2 {{expected expression}}512#pragma omp target parallel for simd nontemporal(, )513  for (i = 0; i < 16; ++i)514    ;515// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 {{expected expression}}516#pragma omp target parallel for simd nontemporal()517  for (i = 0; i < 16; ++i)518    ;519// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 {{expected expression}}520#pragma omp target parallel for simd nontemporal(int)521  for (i = 0; i < 16; ++i)522    ;523// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} omp51-error@+1 {{expected variable name}}524#pragma omp target parallel for simd nontemporal(0)525  for (i = 0; i < 16; ++i)526    ;527// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 {{use of undeclared identifier 'x'}}528#pragma omp target parallel for simd nontemporal(x)529  for (i = 0; i < 16; ++i)530    ;531// expected-error@+2 {{use of undeclared identifier 'x'}}532// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 {{use of undeclared identifier 'y'}}533#pragma omp target parallel for simd nontemporal(x, y)534  for (i = 0; i < 16; ++i)535    ;536// expected-error@+3 {{use of undeclared identifier 'x'}}537// expected-error@+2 {{use of undeclared identifier 'y'}}538// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 {{use of undeclared identifier 'z'}}539#pragma omp target parallel for simd nontemporal(x, y, z)540  for (i = 0; i < 16; ++i)541    ;542 543  int x, y;544// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}545#pragma omp target parallel for simd nontemporal(x :)546  for (i = 0; i < 16; ++i)547    ;548// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}}549#pragma omp target parallel for simd nontemporal(x :, )550  for (i = 0; i < 16; ++i)551    ;552 553// omp51-note@+2 {{defined as nontemporal}}554// omp45-error@+1 2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} omp51-error@+1 {{a variable cannot appear in more than one nontemporal clause}}555#pragma omp target parallel for simd nontemporal(x) nontemporal(x)556  for (i = 0; i < 16; ++i)557    ;558 559// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}}560#pragma omp target parallel for simd private(x) nontemporal(x)561  for (i = 0; i < 16; ++i)562    ;563 564// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}}565#pragma omp target parallel for simd nontemporal(x) private(x)566  for (i = 0; i < 16; ++i)567    ;568 569// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}}570#pragma omp target parallel for simd nontemporal(x, y : 0)571  for (i = 0; i < 16; ++i)572    ;573 574// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}}575#pragma omp target parallel for simd nontemporal(x) lastprivate(x)576  for (i = 0; i < 16; ++i)577    ;578 579// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target parallel for simd'}}580#pragma omp target parallel for simd lastprivate(x) nontemporal(x)581  for (i = 0; i < 16; ++i)582    ;583}584 585