brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.0 KiB · 1387263 Raw
440 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,omp5,omp50 %s -Wuninitialized3// RUN: %clang_cc1 -fsyntax-only -fopenmp -verify=expected,omp5,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,omp5,omp50 %s -Wuninitialized7// RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -verify=expected,omp5,omp51 %s -Wuninitialized8 9// expected-error@+1 {{unexpected OpenMP directive '#pragma omp target teams distribute simd'}}10#pragma omp target teams distribute simd11 12// expected-error@+1 {{unexpected OpenMP directive '#pragma omp target teams distribute simd'}}13#pragma omp target teams distribute simd foo14 15void test_no_clause(void) {16  int i;17#pragma omp target teams distribute simd18  for (i = 0; i < 16; ++i)19    ;20 21// expected-error@+2 {{statement after '#pragma omp target teams distribute simd' must be a for loop}}22#pragma omp target teams distribute simd23  ++i;24}25 26void test_branch_protected_scope(void) {27  int i = 0;28L1:29  ++i;30 31  int x[24];32 33#pragma omp target teams distribute simd34  for (i = 0; i < 16; ++i) {35    if (i == 5)36      goto L1; // expected-error {{use of undeclared label 'L1'}}37    else if (i == 6)38      return; // expected-error {{cannot return from OpenMP region}}39    else if (i == 7)40      goto L2;41    else if (i == 8) {42    L2:43      x[i]++;44    }45  }46 47  if (x[0] == 0)48    goto L2; // expected-error {{use of undeclared label 'L2'}}49  else if (x[1] == 1)50    goto L1;51}52 53void test_invalid_clause(void) {54  int i;55// expected-warning@+1 {{extra tokens at the end of '#pragma omp target teams distribute simd' are ignored}}56#pragma omp target teams distribute simd foo bar57  for (i = 0; i < 16; ++i)58    ;59}60 61void test_non_identifiers(void) {62  int i, x;63 64// expected-warning@+1 {{extra tokens at the end of '#pragma omp target teams distribute simd' are ignored}}65#pragma omp target teams distribute simd;66  for (i = 0; i < 16; ++i)67    ;68 69// expected-warning@+1 {{extra tokens at the end of '#pragma omp target teams distribute simd' are ignored}}70#pragma omp target teams distribute simd private(x);71  for (i = 0; i < 16; ++i)72    ;73 74// expected-warning@+1 {{extra tokens at the end of '#pragma omp target teams distribute simd' are ignored}}75#pragma omp target teams distribute simd, private(x);76  for (i = 0; i < 16; ++i)77    ;78}79 80extern int foo(void);81 82void test_collapse(void) {83  int i;84// expected-error@+1 {{expected '('}}85#pragma omp target teams distribute simd collapse86  for (i = 0; i < 16; ++i)87    ;88// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}89#pragma omp target teams distribute simd collapse(90  for (i = 0; i < 16; ++i)91    ;92// expected-error@+1 {{expected expression}}93#pragma omp target teams distribute simd collapse()94  for (i = 0; i < 16; ++i)95    ;96// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}97#pragma omp target teams distribute simd collapse(,98  for (i = 0; i < 16; ++i)99    ;100// expected-error@+1 {{expected expression}}  expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}101#pragma omp target teams distribute simd collapse(, )102  for (i = 0; i < 16; ++i)103    ;104// expected-warning@+2 {{extra tokens at the end of '#pragma omp target teams distribute simd' are ignored}}105// expected-error@+1 {{expected '('}}106#pragma omp target teams distribute simd collapse 4)107  for (i = 0; i < 16; ++i)108    ;109// expected-error@+2 {{expected ')'}}110// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}111#pragma omp target teams distribute simd collapse(4112  for (i = 0; i < 16; ++i)113    ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute simd', but found only 1}}114// expected-error@+2 {{expected ')'}}115// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}116#pragma omp target teams distribute simd collapse(4,117  for (i = 0; i < 16; ++i)118    ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute simd', but found only 1}}119// expected-error@+2 {{expected ')'}}120// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}121#pragma omp target teams distribute simd collapse(4, )122  for (i = 0; i < 16; ++i)123    ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute simd', but found only 1}}124// expected-note@+1 {{as specified in 'collapse' clause}}125#pragma omp target teams distribute simd collapse(4)126  for (i = 0; i < 16; ++i)127    ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute simd', but found only 1}}128// expected-error@+2 {{expected ')'}}129// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}130#pragma omp target teams distribute simd collapse(4 4)131  for (i = 0; i < 16; ++i)132    ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute simd', but found only 1}}133// expected-error@+2 {{expected ')'}}134// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}135#pragma omp target teams distribute simd collapse(4, , 4)136  for (i = 0; i < 16; ++i)137    ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute simd', but found only 1}}138#pragma omp target teams distribute simd collapse(4)139  for (int i1 = 0; i1 < 16; ++i1)140    for (int i2 = 0; i2 < 16; ++i2)141      for (int i3 = 0; i3 < 16; ++i3)142        for (int i4 = 0; i4 < 16; ++i4)143          foo();144// expected-error@+2 {{expected ')'}}145// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}146#pragma omp target teams distribute simd collapse(4, 8)147  for (i = 0; i < 16; ++i)148    ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute simd', but found only 1}}149// expected-error@+1 {{integer constant expression}}150#pragma omp target teams distribute simd collapse(2.5)151  for (i = 0; i < 16; ++i)152    ;153// expected-error@+1 {{integer constant expression}}154#pragma omp target teams distribute simd collapse(foo())155  for (i = 0; i < 16; ++i)156    ;157// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}158#pragma omp target teams distribute simd collapse(-5)159  for (i = 0; i < 16; ++i)160    ;161// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}162#pragma omp target teams distribute simd collapse(0)163  for (i = 0; i < 16; ++i)164    ;165// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}166#pragma omp target teams distribute simd collapse(5 - 5)167  for (i = 0; i < 16; ++i)168    ;169 170// expected-error@+4 {{OpenMP constructs may not be nested inside a simd region}}171#pragma omp target teams distribute simd collapse(2) firstprivate(i) // expected-note {{defined as firstprivate}}172  for (i = 0; i < 16; ++i) // expected-error {{loop iteration variable in the associated loop of 'omp target teams distribute simd' directive may not be firstprivate, predetermined as lastprivate}}173    for (int j = 0; j < 16; ++j)174#pragma omp parallel 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 teams distribute 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 teams distribute simd private(,189  for (i = 0; i < 16; ++i)190    ;191// expected-error@+1 2 {{expected expression}}192#pragma omp target teams distribute simd private(, )193  for (i = 0; i < 16; ++i)194    ;195// expected-error@+1 {{expected expression}}196#pragma omp target teams distribute simd private()197  for (i = 0; i < 16; ++i)198    ;199// expected-error@+1 {{expected expression}}200#pragma omp target teams distribute simd private(int)201  for (i = 0; i < 16; ++i)202    ;203// expected-error@+1 {{expected variable name}}204#pragma omp target teams distribute simd private(0)205  for (i = 0; i < 16; ++i)206    ;207 208  int x, y, z;209#pragma omp target teams distribute simd private(x)210  for (i = 0; i < 16; ++i)211    ;212#pragma omp target teams distribute simd private(x, y)213  for (i = 0; i < 16; ++i)214    ;215#pragma omp target teams distribute 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 teams distribute 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 teams distribute simd lastprivate(,232  for (i = 0; i < 16; ++i)233    ;234// expected-error@+1 2 {{expected expression}}235#pragma omp target teams distribute simd lastprivate(, )236  for (i = 0; i < 16; ++i)237    ;238// expected-error@+1 {{expected expression}}239#pragma omp target teams distribute simd lastprivate()240  for (i = 0; i < 16; ++i)241    ;242// expected-error@+1 {{expected expression}}243#pragma omp target teams distribute simd lastprivate(int)244  for (i = 0; i < 16; ++i)245    ;246// expected-error@+1 {{expected variable name}}247#pragma omp target teams distribute simd lastprivate(0)248  for (i = 0; i < 16; ++i)249    ;250 251  int x, y, z;252#pragma omp target teams distribute simd lastprivate(x)253  for (i = 0; i < 16; ++i)254    ;255#pragma omp target teams distribute simd lastprivate(x, y)256  for (i = 0; i < 16; ++i)257    ;258#pragma omp target teams distribute 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 teams distribute 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 teams distribute simd firstprivate(,274  for (i = 0; i < 16; ++i)275    ;276// expected-error@+1 2 {{expected expression}}277#pragma omp target teams distribute simd firstprivate(, )278  for (i = 0; i < 16; ++i)279    ;280// expected-error@+1 {{expected expression}}281#pragma omp target teams distribute simd firstprivate()282  for (i = 0; i < 16; ++i)283    ;284// expected-error@+1 {{expected expression}}285#pragma omp target teams distribute simd firstprivate(int)286  for (i = 0; i < 16; ++i)287    ;288// expected-error@+1 {{expected variable name}}289#pragma omp target teams distribute simd firstprivate(0)290  for (i = 0; i < 16; ++i)291    ;292 293  int x, y, z;294// expected-error@+1 {{lastprivate variable cannot be firstprivate}} expected-note@+1 {{defined as lastprivate}}295#pragma omp target teams distribute simd lastprivate(x) firstprivate(x)296  for (i = 0; i < 16; ++i)297    ;298// expected-error@+1 2 {{lastprivate variable cannot be firstprivate}} expected-note@+1 2 {{defined as lastprivate}}299#pragma omp target teams distribute simd lastprivate(x, y) firstprivate(x, y)300  for (i = 0; i < 16; ++i)301    ;302// expected-error@+1 3 {{lastprivate variable cannot be firstprivate}} expected-note@+1 3 {{defined as lastprivate}}303#pragma omp target teams distribute simd lastprivate(x, y, z) firstprivate(x, y, z)304  for (i = 0; i < 16; ++i)305    ;306// expected-error@+1 {{the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter}}307#pragma omp target teams distribute simd simdlen(64) safelen(8)308  for (i = 0; i < 16; ++i)309    ;310}311 312void test_loop_messages(void) {313  float a[100], b[100], c[100];314// expected-error@+2 {{variable must be of integer or pointer type}}315#pragma omp target teams distribute simd316  for (float fi = 0; fi < 10.0; fi++) {317    c[(int)fi] = a[(int)fi] + b[(int)fi];318  }319// expected-error@+2 {{variable must be of integer or pointer type}}320#pragma omp target teams distribute simd321  for (double fi = 0; fi < 10.0; fi++) {322    c[(int)fi] = a[(int)fi] + b[(int)fi];323  }324}325 326void test_nontemporal(void) {327  int i;328// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}} expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}329#pragma omp target teams distribute simd nontemporal(330  for (i = 0; i < 16; ++i)331    ;332// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}} expected-error@+1 2 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}333#pragma omp target teams distribute simd nontemporal(,334  for (i = 0; i < 16; ++i)335    ;336// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}} expected-error@+1 2 {{expected expression}}337#pragma omp target teams distribute simd nontemporal(, )338  for (i = 0; i < 16; ++i)339    ;340// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}} expected-error@+1 {{expected expression}}341#pragma omp target teams distribute simd nontemporal()342  for (i = 0; i < 16; ++i)343    ;344// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}} expected-error@+1 {{expected expression}}345#pragma omp target teams distribute simd nontemporal(int)346  for (i = 0; i < 16; ++i)347    ;348// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}} omp5-error@+1 {{expected variable name}}349#pragma omp target teams distribute simd nontemporal(0)350  for (i = 0; i < 16; ++i)351    ;352// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}} expected-error@+1 {{use of undeclared identifier 'x'}}353#pragma omp target teams distribute simd nontemporal(x)354  for (i = 0; i < 16; ++i)355    ;356// expected-error@+2 {{use of undeclared identifier 'x'}}357// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}} expected-error@+1 {{use of undeclared identifier 'y'}}358#pragma omp target teams distribute simd nontemporal(x, y)359  for (i = 0; i < 16; ++i)360    ;361// expected-error@+3 {{use of undeclared identifier 'x'}}362// expected-error@+2 {{use of undeclared identifier 'y'}}363// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}} expected-error@+1 {{use of undeclared identifier 'z'}}364#pragma omp target teams distribute simd nontemporal(x, y, z)365  for (i = 0; i < 16; ++i)366    ;367 368  int x, y;369// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}370#pragma omp target teams distribute simd nontemporal(x :)371  for (i = 0; i < 16; ++i)372    ;373// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}}374#pragma omp target teams distribute simd nontemporal(x :, )375  for (i = 0; i < 16; ++i)376    ;377 378// omp5-note@+2 {{defined as nontemporal}}379// omp45-error@+1 2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}} omp5-error@+1 {{a variable cannot appear in more than one nontemporal clause}}380#pragma omp target teams distribute simd nontemporal(x) nontemporal(x)381  for (i = 0; i < 16; ++i)382    ;383 384// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}}385#pragma omp target teams distribute simd private(x) nontemporal(x)386  for (i = 0; i < 16; ++i)387    ;388 389// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}}390#pragma omp target teams distribute simd nontemporal(x) private(x)391  for (i = 0; i < 16; ++i)392    ;393 394// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}}395#pragma omp target teams distribute simd nontemporal(x, y : 0)396  for (i = 0; i < 16; ++i)397    ;398 399// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}}400#pragma omp target teams distribute simd nontemporal(x) lastprivate(x)401  for (i = 0; i < 16; ++i)402    ;403 404// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target teams distribute simd'}}405#pragma omp target teams distribute simd lastprivate(x) nontemporal(x)406  for (i = 0; i < 16; ++i)407    ;408#pragma omp target teams distribute simd order // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp target teams distribute simd'}} expected-error {{expected '(' after 'order'}}409  for (int i = 0; i < 10; ++i)410    ;411#pragma omp target teams distribute simd order( // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp target teams distribute simd'}} expected-error {{expected ')'}} expected-note {{to match this '('}} omp5-error {{expected 'concurrent' in OpenMP clause 'order'}}412  for (int i = 0; i < 10; ++i)413    ;414#pragma omp target teams distribute simd order(none // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp target teams distribute simd'}} expected-error {{expected ')'}} expected-note {{to match this '('}} omp5-error {{expected 'concurrent' in OpenMP clause 'order'}}415  for (int i = 0; i < 10; ++i)416    ;417#pragma omp target teams distribute simd order(concurrent // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp target teams distribute simd'}} expected-error {{expected ')'}} expected-note {{to match this '('}}418  for (int i = 0; i < 10; ++i)419    ;420#pragma omp target teams distribute simd order(concurrent) // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp target teams distribute simd'}}421  for (int i = 0; i < 10; ++i)422    ;423#pragma omp target teams distribute simd order(unconstrained:) // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp target teams distribute simd'}} omp5-error {{expected 'concurrent' in OpenMP clause 'order'}}424  for (int i = 0; i < 10; ++i)425    ;426#pragma omp target teams distribute simd order(reproducible:concurrent // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp target teams distribute simd'}} expected-error {{expected ')'}} expected-note {{to match this '('}} omp50-error {{expected 'concurrent' in OpenMP clause 'order'}}427  for (int i = 0; i < 10; ++i)428    ;429#pragma omp target teams distribute simd order(reproducible:concurrent) // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp target teams distribute simd'}} omp50-error {{expected 'concurrent' in OpenMP clause 'order'}}430  for (int i = 0; i < 10; ++i)431    ;432#pragma omp target teams distribute simd order(unconstrained:concurrent) // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp target teams distribute simd'}} omp50-error {{expected 'concurrent' in OpenMP clause 'order'}}433  for (int i = 0; i < 10; ++i)434    ;435#pragma omp target teams distribute simd order(concurrent) order(concurrent) // omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp target teams distribute simd'}} omp45-error {{unexpected OpenMP clause 'order' in directive '#pragma omp target teams distribute simd'}} omp51-error {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'order' clause}}436  for (int i = 0; i < 10; ++i)437    ;438}439 440