brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · b3408fa Raw
103 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp -std=c++11 -o - %s -Wuninitialized2 3// RUN: %clang_cc1 -verify -fopenmp-simd -std=c++11 -o - %s -Wuninitialized4 5void xxx(int argc) {6  int x; // expected-note {{initialize the variable 'x' to silence this warning}}7#pragma omp parallel for simd8  for (int i = 0; i < 10; ++i)9    argc = x; // expected-warning {{variable 'x' is uninitialized when used here}}10}11 12void foo() {13}14 15#pragma omp parallel for simd // expected-error {{unexpected OpenMP directive '#pragma omp parallel for simd'}}16 17int main(int argc, char **argv) {18#pragma omp parallel for simd { // expected-warning {{extra tokens at the end of '#pragma omp parallel for simd' are ignored}}19  for (int i = 0; i < argc; ++i)20    foo();21#pragma omp parallel for simd ( // expected-warning {{extra tokens at the end of '#pragma omp parallel for simd' are ignored}}22  for (int i = 0; i < argc; ++i)23    foo();24#pragma omp parallel for simd[ // expected-warning {{extra tokens at the end of '#pragma omp parallel for simd' are ignored}}25  for (int i = 0; i < argc; ++i)26    foo();27#pragma omp parallel for simd] // expected-warning {{extra tokens at the end of '#pragma omp parallel for simd' are ignored}}28  for (int i = 0; i < argc; ++i)29    foo();30#pragma omp parallel for simd) // expected-warning {{extra tokens at the end of '#pragma omp parallel for simd' are ignored}}31  for (int i = 0; i < argc; ++i)32    foo();33#pragma omp parallel for simd } // expected-warning {{extra tokens at the end of '#pragma omp parallel for simd' are ignored}}34  for (int i = 0; i < argc; ++i)35    foo();36#pragma omp parallel for simd37  for (int i = 0; i < argc; ++i)38    foo();39// expected-warning@+1 {{extra tokens at the end of '#pragma omp parallel for simd' are ignored}}40#pragma omp parallel for simd unknown()41  for (int i = 0; i < argc; ++i)42    foo();43L1:44  for (int i = 0; i < argc; ++i)45    foo();46#pragma omp parallel for simd47  for (int i = 0; i < argc; ++i)48    foo();49#pragma omp parallel for simd50  for (int i = 0; i < argc; ++i) {51    goto L1; // expected-error {{use of undeclared label 'L1'}}52    argc++;53  }54 55  for (int i = 0; i < 10; ++i) {56    switch (argc) {57    case (0):58#pragma omp parallel for simd59      for (int i = 0; i < argc; ++i) {60        foo();61        break; // expected-error {{'break' statement cannot be used in OpenMP for loop}}62        continue;63      }64    default:65      break;66    }67  }68#pragma omp parallel for simd default(none) // expected-note {{explicit data sharing attribute requested here}}69  for (int i = 0; i < 10; ++i)70    ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}}71 72  goto L2; // expected-error {{use of undeclared label 'L2'}}73#pragma omp parallel for simd74  for (int i = 0; i < argc; ++i)75  L2:76  foo();77#pragma omp parallel for simd78  for (int i = 0; i < argc; ++i) {79    return 1; // expected-error {{cannot return from OpenMP region}}80  }81 82  [[]] // expected-error {{an attribute list cannot appear here}}83#pragma omp parallel for simd84      for (int n = 0; n < 100; ++n) {85  }86 87  return 0;88}89 90void test_ordered() {91#pragma omp parallel for simd ordered ordered // expected-error {{directive '#pragma omp parallel for simd' cannot contain more than one 'ordered' clause}}92  for (int i = 0; i < 16; ++i)93    ;94#pragma omp parallel for simd ordered95  for (int i = 0; i < 16; ++i)96    ;97// expected-error@+1 {{'ordered' clause with a parameter cannot be specified in '#pragma omp parallel for simd' directive}}98#pragma omp parallel for simd ordered(1)99  for (int i = 0; i < 16; ++i)100    ;101}102 103