brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.1 KiB · 27b924d Raw
318 lines · c
1// RUN: %clang_cc1 -fsyntax-only -fopenmp -verify %s -Wuninitialized2 3// RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -verify %s -Wuninitialized4 5// expected-error@+1 {{unexpected OpenMP directive '#pragma omp target teams distribute'}}6#pragma omp target teams distribute7 8// expected-error@+1 {{unexpected OpenMP directive '#pragma omp target teams distribute'}}9#pragma omp target teams distribute foo10 11void test_no_clause(void) {12  int i;13#pragma omp target teams distribute14  for (i = 0; i < 16; ++i)15    ;16 17// expected-error@+2 {{statement after '#pragma omp target teams distribute' must be a for loop}}18#pragma omp target teams distribute19  ++i;20}21 22void test_branch_protected_scope(void) {23  int i = 0;24L1:25  ++i;26 27  int x[24];28 29#pragma omp target teams distribute30  for (i = 0; i < 16; ++i) {31    if (i == 5)32      goto L1; // expected-error {{use of undeclared label 'L1'}}33    else if (i == 6)34      return; // expected-error {{cannot return from OpenMP region}}35    else if (i == 7)36      goto L2;37    else if (i == 8) {38    L2:39      x[i]++;40    }41  }42 43  if (x[0] == 0)44    goto L2; // expected-error {{use of undeclared label 'L2'}}45  else if (x[1] == 1)46    goto L1;47}48 49void test_invalid_clause(void) {50  int i;51// expected-warning@+1 {{extra tokens at the end of '#pragma omp target teams distribute' are ignored}}52#pragma omp target teams distribute foo bar53  for (i = 0; i < 16; ++i)54    ;55}56 57void test_non_identifiers(void) {58  int i, x;59 60// expected-warning@+1 {{extra tokens at the end of '#pragma omp target teams distribute' are ignored}}61#pragma omp target teams distribute;62  for (i = 0; i < 16; ++i)63    ;64 65// expected-warning@+1 {{extra tokens at the end of '#pragma omp target teams distribute' are ignored}}66#pragma omp target teams distribute private(x);67  for (i = 0; i < 16; ++i)68    ;69 70// expected-warning@+1 {{extra tokens at the end of '#pragma omp target teams distribute' are ignored}}71#pragma omp target teams distribute, private(x);72  for (i = 0; i < 16; ++i)73    ;74}75 76extern int foo(void);77 78void test_collapse(void) {79  int i;80// expected-error@+1 {{expected '('}}81#pragma omp target teams distribute collapse82  for (i = 0; i < 16; ++i)83    ;84// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}85#pragma omp target teams distribute collapse(86  for (i = 0; i < 16; ++i)87    ;88// expected-error@+1 {{expected expression}}89#pragma omp target teams distribute collapse()90  for (i = 0; i < 16; ++i)91    ;92// expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}93#pragma omp target teams distribute 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 collapse(, )98  for (i = 0; i < 16; ++i)99    ;100// expected-warning@+2 {{extra tokens at the end of '#pragma omp target teams distribute' are ignored}}101// expected-error@+1 {{expected '('}}102#pragma omp target teams distribute collapse 4)103  for (i = 0; i < 16; ++i)104    ;105// expected-error@+2 {{expected ')'}}106// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}107#pragma omp target teams distribute collapse(4108  for (i = 0; i < 16; ++i)109    ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute', but found only 1}}110// expected-error@+2 {{expected ')'}}111// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}112#pragma omp target teams distribute collapse(4,113  for (i = 0; i < 16; ++i)114    ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute', but found only 1}}115// expected-error@+2 {{expected ')'}}116// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}117#pragma omp target teams distribute collapse(4, )118  for (i = 0; i < 16; ++i)119    ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute', but found only 1}}120// expected-note@+1 {{as specified in 'collapse' clause}}121#pragma omp target teams distribute collapse(4)122  for (i = 0; i < 16; ++i)123    ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute', but found only 1}}124// expected-error@+2 {{expected ')'}}125// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}126#pragma omp target teams distribute collapse(4 4)127  for (i = 0; i < 16; ++i)128    ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute', but found only 1}}129// expected-error@+2 {{expected ')'}}130// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}131#pragma omp target teams distribute collapse(4, , 4)132  for (i = 0; i < 16; ++i)133    ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute', but found only 1}}134#pragma omp target teams distribute collapse(4)135  for (int i1 = 0; i1 < 16; ++i1)136    for (int i2 = 0; i2 < 16; ++i2)137      for (int i3 = 0; i3 < 16; ++i3)138        for (int i4 = 0; i4 < 16; ++i4)139          foo();140// expected-error@+2 {{expected ')'}}141// expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}142#pragma omp target teams distribute collapse(4, 8)143  for (i = 0; i < 16; ++i)144    ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute', but found only 1}}145// expected-error@+1 {{integer constant expression}}146#pragma omp target teams distribute collapse(2.5)147  for (i = 0; i < 16; ++i)148    ;149// expected-error@+1 {{integer constant expression}}150#pragma omp target teams distribute collapse(foo())151  for (i = 0; i < 16; ++i)152    ;153// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}154#pragma omp target teams distribute collapse(-5)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 collapse(0)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 collapse(5 - 5)163  for (i = 0; i < 16; ++i)164    ;165// expected-error@+3 {{loop iteration variable in the associated loop of 'omp target teams distribute' directive may not be firstprivate, predetermined as private}}166// expected-note@+1 {{defined as firstprivate}}167#pragma omp target teams distribute collapse(2) firstprivate(i)168  for (i = 0; i < 16; ++i)169    for (int j = 0; j < 16; ++j)170#pragma omp parallel for reduction(+ : i, j)171      for (int k = 0; k < 16; ++k)172        i += j;173}174 175void test_private(void) {176  int i;177// expected-error@+2 {{expected expression}}178// expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}179#pragma omp target teams distribute private(180  for (i = 0; i < 16; ++i)181    ;182// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}183// expected-error@+1 2 {{expected expression}}184#pragma omp target teams distribute private(,185  for (i = 0; i < 16; ++i)186    ;187// expected-error@+1 2 {{expected expression}}188#pragma omp target teams distribute private(, )189  for (i = 0; i < 16; ++i)190    ;191// expected-error@+1 {{expected expression}}192#pragma omp target teams distribute private()193  for (i = 0; i < 16; ++i)194    ;195// expected-error@+1 {{expected expression}}196#pragma omp target teams distribute private(int)197  for (i = 0; i < 16; ++i)198    ;199// expected-error@+1 {{expected variable name}}200#pragma omp target teams distribute private(0)201  for (i = 0; i < 16; ++i)202    ;203 204  int x, y, z;205#pragma omp target teams distribute private(x)206  for (i = 0; i < 16; ++i)207    ;208#pragma omp target teams distribute private(x, y)209  for (i = 0; i < 16; ++i)210    ;211#pragma omp target teams distribute private(x, y, z)212  for (i = 0; i < 16; ++i) {213    x = y * i + z;214  }215}216 217void test_lastprivate(void) {218  int i;219// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}220// expected-error@+1 {{expected expression}}221#pragma omp target teams distribute lastprivate(222  for (i = 0; i < 16; ++i)223    ;224 225// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}226// expected-error@+1 2 {{expected expression}}227#pragma omp target teams distribute lastprivate(,228  for (i = 0; i < 16; ++i)229    ;230// expected-error@+1 2 {{expected expression}}231#pragma omp target teams distribute lastprivate(, )232  for (i = 0; i < 16; ++i)233    ;234// expected-error@+1 {{expected expression}}235#pragma omp target teams distribute lastprivate()236  for (i = 0; i < 16; ++i)237    ;238// expected-error@+1 {{expected expression}}239#pragma omp target teams distribute lastprivate(int)240  for (i = 0; i < 16; ++i)241    ;242// expected-error@+1 {{expected variable name}}243#pragma omp target teams distribute lastprivate(0)244  for (i = 0; i < 16; ++i)245    ;246 247  int x, y, z;248#pragma omp target teams distribute lastprivate(x)249  for (i = 0; i < 16; ++i)250    ;251#pragma omp target teams distribute lastprivate(x, y)252  for (i = 0; i < 16; ++i)253    ;254#pragma omp target teams distribute lastprivate(x, y, z)255  for (i = 0; i < 16; ++i)256    ;257}258 259void test_firstprivate(void) {260  int i;261// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}262// expected-error@+1 {{expected expression}}263#pragma omp target teams distribute firstprivate(264  for (i = 0; i < 16; ++i)265    ;266 267// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}268// expected-error@+1 2 {{expected expression}}269#pragma omp target teams distribute firstprivate(,270  for (i = 0; i < 16; ++i)271    ;272// expected-error@+1 2 {{expected expression}}273#pragma omp target teams distribute firstprivate(, )274  for (i = 0; i < 16; ++i)275    ;276// expected-error@+1 {{expected expression}}277#pragma omp target teams distribute firstprivate()278  for (i = 0; i < 16; ++i)279    ;280// expected-error@+1 {{expected expression}}281#pragma omp target teams distribute firstprivate(int)282  for (i = 0; i < 16; ++i)283    ;284// expected-error@+1 {{expected variable name}}285#pragma omp target teams distribute firstprivate(0)286  for (i = 0; i < 16; ++i)287    ;288 289  int x, y, z;290// expected-error@+1 {{lastprivate variable cannot be firstprivate}} expected-note@+1 {{defined as lastprivate}}291#pragma omp target teams distribute lastprivate(x) firstprivate(x)292  for (i = 0; i < 16; ++i)293    ;294// expected-error@+1 2 {{lastprivate variable cannot be firstprivate}} expected-note@+1 2 {{defined as lastprivate}}295#pragma omp target teams distribute lastprivate(x, y) firstprivate(x, y)296  for (i = 0; i < 16; ++i)297    ;298// expected-error@+1 3 {{lastprivate variable cannot be firstprivate}} expected-note@+1 3 {{defined as lastprivate}}299#pragma omp target teams distribute lastprivate(x, y, z) firstprivate(x, y, z)300  for (i = 0; i < 16; ++i)301    ;302}303 304void test_loop_messages(void) {305  float a[100], b[100], c[100];306// expected-error@+2 {{variable must be of integer or pointer type}}307#pragma omp target teams distribute308  for (float fi = 0; fi < 10.0; fi++) {309    c[(int)fi] = a[(int)fi] + b[(int)fi];310  }311// expected-error@+2 {{variable must be of integer or pointer type}}312#pragma omp target teams distribute313  for (double fi = 0; fi < 10.0; fi++) {314    c[(int)fi] = a[(int)fi] + b[(int)fi];315  }316}317 318