brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.9 KiB · 37443b1 Raw
575 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 simd'}}8#pragma omp target simd9 10// expected-error@+1 {{unexpected OpenMP directive '#pragma omp target simd'}}11#pragma omp target simd foo12 13void test_no_clause(void) {14  int i;15#pragma omp target simd16  for (i = 0; i < 16; ++i)17    ;18 19// expected-error@+2 {{statement after '#pragma omp target simd' must be a for loop}}20#pragma omp target 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 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 simd' are ignored}}54#pragma omp target 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 simd' are ignored}}63#pragma omp target simd;64  for (i = 0; i < 16; ++i)65    ;66 67// expected-warning@+1 {{extra tokens at the end of '#pragma omp target simd' are ignored}}68#pragma omp target 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 simd' are ignored}}73#pragma omp target 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 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 simd collapse(88  for (i = 0; i < 16; ++i)89    ;90// expected-error@+1 {{expected expression}}91#pragma omp target 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 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 simd collapse(, )100  for (i = 0; i < 16; ++i)101    ;102// expected-warning@+2 {{extra tokens at the end of '#pragma omp target simd' are ignored}}103// expected-error@+1 {{expected '('}}104#pragma omp target 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 simd collapse(4110  for (i = 0; i < 16; ++i)111    ; // expected-error {{expected 4 for loops after '#pragma omp target 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 simd collapse(4,115  for (i = 0; i < 16; ++i)116    ; // expected-error {{expected 4 for loops after '#pragma omp target 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 simd collapse(4, )120  for (i = 0; i < 16; ++i)121    ; // expected-error {{expected 4 for loops after '#pragma omp target simd', but found only 1}}122// expected-note@+1 {{as specified in 'collapse' clause}}123#pragma omp target simd collapse(4)124  for (i = 0; i < 16; ++i)125    ; // expected-error {{expected 4 for loops after '#pragma omp target 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 simd collapse(4 4)129  for (i = 0; i < 16; ++i)130    ; // expected-error {{expected 4 for loops after '#pragma omp target 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 simd collapse(4, , 4)134  for (i = 0; i < 16; ++i)135    ; // expected-error {{expected 4 for loops after '#pragma omp target simd', but found only 1}}136#pragma omp target 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 simd collapse(4, 8)145  for (i = 0; i < 16; ++i)146    ; // expected-error {{expected 4 for loops after '#pragma omp target simd', but found only 1}}147// expected-error@+1 {{integer constant expression}}148#pragma omp target simd collapse(2.5)149  for (i = 0; i < 16; ++i)150    ;151// expected-error@+1 {{integer constant expression}}152#pragma omp target 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 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 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 simd collapse(5 - 5)165  for (i = 0; i < 16; ++i)166    ;167}168 169void test_private(void) {170  int i;171// expected-error@+2 {{expected expression}}172// expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}173#pragma omp target simd private(174  for (i = 0; i < 16; ++i)175    ;176// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}177// expected-error@+1 2 {{expected expression}}178#pragma omp target simd private(,179  for (i = 0; i < 16; ++i)180    ;181// expected-error@+1 2 {{expected expression}}182#pragma omp target simd private(, )183  for (i = 0; i < 16; ++i)184    ;185// expected-error@+1 {{expected expression}}186#pragma omp target simd private()187  for (i = 0; i < 16; ++i)188    ;189// expected-error@+1 {{expected expression}}190#pragma omp target simd private(int)191  for (i = 0; i < 16; ++i)192    ;193// expected-error@+1 {{expected variable name}}194#pragma omp target simd private(0)195  for (i = 0; i < 16; ++i)196    ;197 198  int x, y, z;199#pragma omp target simd private(x)200  for (i = 0; i < 16; ++i)201    ;202#pragma omp target simd private(x, y)203  for (i = 0; i < 16; ++i)204    ;205#pragma omp target simd private(x, y, z)206  for (i = 0; i < 16; ++i) {207    x = y * i + z;208  }209}210 211void test_lastprivate(void) {212  int i;213// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}214// expected-error@+1 {{expected expression}}215#pragma omp target simd lastprivate(216  for (i = 0; i < 16; ++i)217    ;218 219// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}220// expected-error@+1 2 {{expected expression}}221#pragma omp target simd lastprivate(,222  for (i = 0; i < 16; ++i)223    ;224// expected-error@+1 2 {{expected expression}}225#pragma omp target simd lastprivate(, )226  for (i = 0; i < 16; ++i)227    ;228// expected-error@+1 {{expected expression}}229#pragma omp target simd lastprivate()230  for (i = 0; i < 16; ++i)231    ;232// expected-error@+1 {{expected expression}}233#pragma omp target simd lastprivate(int)234  for (i = 0; i < 16; ++i)235    ;236// expected-error@+1 {{expected variable name}}237#pragma omp target simd lastprivate(0)238  for (i = 0; i < 16; ++i)239    ;240 241  int x, y, z;242#pragma omp target simd lastprivate(x)243  for (i = 0; i < 16; ++i)244    ;245#pragma omp target simd lastprivate(x, y)246  for (i = 0; i < 16; ++i)247    ;248#pragma omp target simd lastprivate(x, y, z)249  for (i = 0; i < 16; ++i)250    ;251}252 253void test_firstprivate(void) {254  int i;255// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}256// expected-error@+1 {{expected expression}}257#pragma omp target simd firstprivate(258  for (i = 0; i < 16; ++i)259    ;260 261// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}262// expected-error@+1 2 {{expected expression}}263#pragma omp target simd firstprivate(,264  for (i = 0; i < 16; ++i)265    ;266// expected-error@+1 2 {{expected expression}}267#pragma omp target simd firstprivate(, )268  for (i = 0; i < 16; ++i)269    ;270// expected-error@+1 {{expected expression}}271#pragma omp target simd firstprivate()272  for (i = 0; i < 16; ++i)273    ;274// expected-error@+1 {{expected expression}}275#pragma omp target simd firstprivate(int)276  for (i = 0; i < 16; ++i)277    ;278// expected-error@+1 {{expected variable name}}279#pragma omp target simd firstprivate(0)280  for (i = 0; i < 16; ++i)281    ;282 283  int x, y, z;284#pragma omp target simd lastprivate(x) firstprivate(x)285  for (i = 0; i < 16; ++i)286    ;287#pragma omp target simd lastprivate(x, y) firstprivate(x, y)288  for (i = 0; i < 16; ++i)289    ;290#pragma omp target simd lastprivate(x, y, z) firstprivate(x, y, z)291  for (i = 0; i < 16; ++i)292    ;293}294 295void test_loop_messages(void) {296  float a[100], b[100], c[100];297// expected-error@+2 {{variable must be of integer or pointer type}}298#pragma omp target simd299  for (float fi = 0; fi < 10.0; fi++) {300    c[(int)fi] = a[(int)fi] + b[(int)fi];301  }302// expected-error@+2 {{variable must be of integer or pointer type}}303#pragma omp target simd304  for (double fi = 0; fi < 10.0; fi++) {305    c[(int)fi] = a[(int)fi] + b[(int)fi];306  }307}308 309void test_safelen(void) {310  int i;311// expected-error@+1 {{expected '('}}312#pragma omp target simd safelen313  for (i = 0; i < 16; ++i)314    ;315// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}316#pragma omp target simd safelen(317  for (i = 0; i < 16; ++i)318    ;319// expected-error@+1 {{expected expression}}320#pragma omp target simd safelen()321  for (i = 0; i < 16; ++i)322    ;323// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}324#pragma omp target simd safelen(,325  for (i = 0; i < 16; ++i)326    ;327// expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}328#pragma omp target simd safelen(, )329  for (i = 0; i < 16; ++i)330    ;331// expected-warning@+2 {{extra tokens at the end of '#pragma omp target simd' are ignored}}332// expected-error@+1 {{expected '('}}333#pragma omp target simd safelen 4)334  for (i = 0; i < 16; ++i)335    ;336// expected-error@+2 {{expected ')'}}337// expected-note@+1 {{to match this '('}}338#pragma omp target simd safelen(4339  for (i = 0; i < 16; ++i)340    ;341// expected-error@+2 {{expected ')'}}342// expected-note@+1 {{to match this '('}}343#pragma omp target 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 simd safelen(4, )349  for (i = 0; i < 16; ++i)350    ;351#pragma omp target simd safelen(4)352  for (i = 0; i < 16; ++i)353    ;354// expected-error@+2 {{expected ')'}}355// expected-note@+1 {{to match this '('}}356#pragma omp target simd safelen(4 4)357  for (i = 0; i < 16; ++i)358    ;359// expected-error@+2 {{expected ')'}}360// expected-note@+1 {{to match this '('}}361#pragma omp target simd safelen(4, , 4)362  for (i = 0; i < 16; ++i)363    ;364#pragma omp target simd safelen(4)365  for (i = 0; i < 16; ++i)366    ;367// expected-error@+2 {{expected ')'}}368// expected-note@+1 {{to match this '('}}369#pragma omp target simd safelen(4, 8)370  for (i = 0; i < 16; ++i)371    ;372// expected-error@+1 {{integer constant expression}}373#pragma omp target simd safelen(2.5)374  for (i = 0; i < 16; ++i)375    ;376// expected-error@+1 {{integer constant expression}}377#pragma omp target simd safelen(foo())378  for (i = 0; i < 16; ++i)379    ;380// expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}381#pragma omp target simd safelen(-5)382  for (i = 0; i < 16; ++i)383    ;384// expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}385#pragma omp target simd safelen(0)386  for (i = 0; i < 16; ++i)387    ;388// expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}}389#pragma omp target simd safelen(5 - 5)390  for (i = 0; i < 16; ++i)391    ;392}393 394void test_simdlen(void) {395  int i;396// expected-error@+1 {{expected '('}}397#pragma omp target simd simdlen398  for (i = 0; i < 16; ++i)399    ;400// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}401#pragma omp target simd simdlen(402  for (i = 0; i < 16; ++i)403    ;404// expected-error@+1 {{expected expression}}405#pragma omp target simd simdlen()406  for (i = 0; i < 16; ++i)407    ;408// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}409#pragma omp target simd simdlen(,410  for (i = 0; i < 16; ++i)411    ;412// expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}413#pragma omp target simd simdlen(, )414  for (i = 0; i < 16; ++i)415    ;416// expected-warning@+2 {{extra tokens at the end of '#pragma omp target simd' are ignored}}417// expected-error@+1 {{expected '('}}418#pragma omp target simd simdlen 4)419  for (i = 0; i < 16; ++i)420    ;421// expected-error@+2 {{expected ')'}}422// expected-note@+1 {{to match this '('}}423#pragma omp target simd simdlen(4424  for (i = 0; i < 16; ++i)425    ;426// expected-error@+2 {{expected ')'}}427// expected-note@+1 {{to match this '('}}428#pragma omp target 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 simd simdlen(4, )434  for (i = 0; i < 16; ++i)435    ;436#pragma omp target simd simdlen(4)437  for (i = 0; i < 16; ++i)438    ;439// expected-error@+2 {{expected ')'}}440// expected-note@+1 {{to match this '('}}441#pragma omp target simd simdlen(4 4)442  for (i = 0; i < 16; ++i)443    ;444// expected-error@+2 {{expected ')'}}445// expected-note@+1 {{to match this '('}}446#pragma omp target simd simdlen(4, , 4)447  for (i = 0; i < 16; ++i)448    ;449#pragma omp target simd simdlen(4)450  for (i = 0; i < 16; ++i)451    ;452// expected-error@+2 {{expected ')'}}453// expected-note@+1 {{to match this '('}}454#pragma omp target simd simdlen(4, 8)455  for (i = 0; i < 16; ++i)456    ;457// expected-error@+1 {{integer constant expression}}458#pragma omp target simd simdlen(2.5)459  for (i = 0; i < 16; ++i)460    ;461// expected-error@+1 {{integer constant expression}}462#pragma omp target simd simdlen(foo())463  for (i = 0; i < 16; ++i)464    ;465// expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}466#pragma omp target simd simdlen(-5)467  for (i = 0; i < 16; ++i)468    ;469// expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}470#pragma omp target simd simdlen(0)471  for (i = 0; i < 16; ++i)472    ;473// expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}}474#pragma omp target simd simdlen(5 - 5)475  for (i = 0; i < 16; ++i)476    ;477}478 479void test_safelen_simdlen(void) {480  int i;481// expected-error@+1 {{the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter}}482#pragma omp target simd simdlen(6) safelen(5)483  for (i = 0; i < 16; ++i)484    ;485// expected-error@+1 {{the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter}}486#pragma omp target simd safelen(5) simdlen(6)487  for (i = 0; i < 16; ++i)488    ;489}490 491void test_nontemporal(void) {492  int i;493// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}494#pragma omp target simd nontemporal(495  for (i = 0; i < 16; ++i)496    ;497// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 2 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}498#pragma omp target simd nontemporal(,499  for (i = 0; i < 16; ++i)500    ;501// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 2 {{expected expression}}502#pragma omp target simd nontemporal(, )503  for (i = 0; i < 16; ++i)504    ;505// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{expected expression}}506#pragma omp target simd nontemporal()507  for (i = 0; i < 16; ++i)508    ;509// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{expected expression}}510#pragma omp target simd nontemporal(int)511  for (i = 0; i < 16; ++i)512    ;513// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} omp51-error@+1 {{expected variable name}}514#pragma omp target simd nontemporal(0)515  for (i = 0; i < 16; ++i)516    ;517// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{use of undeclared identifier 'x'}}518#pragma omp target simd nontemporal(x)519  for (i = 0; i < 16; ++i)520    ;521// expected-error@+2 {{use of undeclared identifier 'x'}}522// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{use of undeclared identifier 'y'}}523#pragma omp target simd nontemporal(x, y)524  for (i = 0; i < 16; ++i)525    ;526// expected-error@+3 {{use of undeclared identifier 'x'}}527// expected-error@+2 {{use of undeclared identifier 'y'}}528// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{use of undeclared identifier 'z'}}529#pragma omp target simd nontemporal(x, y, z)530  for (i = 0; i < 16; ++i)531    ;532 533  int x, y;534// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}535#pragma omp target simd nontemporal(x :)536  for (i = 0; i < 16; ++i)537    ;538// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}}539#pragma omp target simd nontemporal(x :, )540  for (i = 0; i < 16; ++i)541    ;542 543// omp51-note@+2 {{defined as nontemporal}}544// omp45-error@+1 2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} omp51-error@+1 {{a variable cannot appear in more than one nontemporal clause}}545#pragma omp target simd nontemporal(x) nontemporal(x)546  for (i = 0; i < 16; ++i)547    ;548 549// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}}550#pragma omp target simd private(x) nontemporal(x)551  for (i = 0; i < 16; ++i)552    ;553 554// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}}555#pragma omp target simd nontemporal(x) private(x)556  for (i = 0; i < 16; ++i)557    ;558 559// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}}560#pragma omp target simd nontemporal(x, y : 0)561  for (i = 0; i < 16; ++i)562    ;563 564// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}}565#pragma omp target simd nontemporal(x) lastprivate(x)566  for (i = 0; i < 16; ++i)567    ;568 569// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}}570#pragma omp target simd lastprivate(x) nontemporal(x)571  for (i = 0; i < 16; ++i)572    ;573}574 575