brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 4b89755 Raw
89 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp %s -Wuninitialized2 3// RUN: %clang_cc1 -verify -fopenmp-simd %s -Wuninitialized4 5void xxx(int argc) {6  int x; // expected-note {{initialize the variable 'x' to silence this warning}}7#pragma omp parallel master8  argc = x; // expected-warning {{variable 'x' is uninitialized when used here}}9}10 11#pragma omp parallel master // expected-error {{unexpected OpenMP directive '#pragma omp parallel master'}}12 13int foo() { 14  return 0;15}16 17int a;18struct S;19S& bar();20int main(int argc, char **argv) {21  #pragma omp parallel master nowait // expected-error {{unexpected OpenMP clause 'nowait' in directive '#pragma omp parallel master'}}22  #pragma omp parallel master unknown // expected-warning {{extra tokens at the end of '#pragma omp parallel master' are ignored}}23  foo();24  {25    #pragma omp master26  } // expected-error {{expected statement}}27  {28    #pragma omp parallel master29  } // expected-error {{expected statement}}30 31  S &s = bar();32  #pragma omp parallel master33  (void)&s;34  #pragma omp parallel master { // expected-warning {{extra tokens at the end of '#pragma omp parallel master' are ignored}}35  foo();36  #pragma omp parallel master ( // expected-warning {{extra tokens at the end of '#pragma omp parallel master' are ignored}}37  foo();38  #pragma omp parallel master [ // expected-warning {{extra tokens at the end of '#pragma omp parallel master' are ignored}}39  foo();40  #pragma omp parallel master ] // expected-warning {{extra tokens at the end of '#pragma omp parallel master' are ignored}}41  foo();42  #pragma omp parallel master ) // expected-warning {{extra tokens at the end of '#pragma omp parallel master' are ignored}}43  foo();44  #pragma omp parallel master } // expected-warning {{extra tokens at the end of '#pragma omp parallel master' are ignored}}45  foo();46  #pragma omp parallel master47  // expected-warning@+1 {{extra tokens at the end of '#pragma omp parallel master' are ignored}}48  #pragma omp parallel master unknown()49  foo();50  L1:51    foo();52  #pragma omp parallel master53  ;54  #pragma omp parallel master55  {56 57  for (int i = 0; i < 10; ++i) {58    switch(argc) {59     case (0):60      #pragma omp parallel master61      {62        foo();63        break; // expected-error {{'break' statement not in loop or switch statement}}64        continue; // expected-error {{'continue' statement not in loop statement}}65      }66      default:67       break;68    }69  }70    goto L1; // expected-error {{use of undeclared label 'L1'}}71    argc++;72  }73#pragma omp parallel master default(none) // expected-note 2 {{explicit data sharing attribute requested here}}74  {75    ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}}76    ++a;    // expected-error {{variable 'a' must have explicitly specified data sharing attributes}}77  }78 79  goto L2; // expected-error {{use of undeclared label 'L2'}}80  #pragma omp parallel master81  L2:82  foo();83  #pragma omp parallel master84  {85    return 1; // expected-error {{cannot return from OpenMP region}}86  }87  return 0;88}89