brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · 7b6b36e Raw
102 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 -std=c++11 -o - %s -Wuninitialized2 3// RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 -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 target teams distribute8  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 15static int pvt;16#pragma omp threadprivate(pvt)17 18#pragma omp target teams distribute // expected-error {{unexpected OpenMP directive '#pragma omp target teams distribute'}}19 20int main(int argc, char **argv) {21#pragma omp target teams distribute { // expected-warning {{extra tokens at the end of '#pragma omp target teams distribute' are ignored}}22  for (int i = 0; i < argc; ++i)23    foo();24#pragma omp target teams distribute ( // expected-warning {{extra tokens at the end of '#pragma omp target teams distribute' are ignored}}25  for (int i = 0; i < argc; ++i)26    foo();27#pragma omp target teams distribute[ // expected-warning {{extra tokens at the end of '#pragma omp target teams distribute' are ignored}}28  for (int i = 0; i < argc; ++i)29    foo();30#pragma omp target teams distribute] // expected-warning {{extra tokens at the end of '#pragma omp target teams distribute' are ignored}}31  for (int i = 0; i < argc; ++i)32    foo();33#pragma omp target teams distribute) // expected-warning {{extra tokens at the end of '#pragma omp target teams distribute' are ignored}}34  for (int i = 0; i < argc; ++i)35    foo();36#pragma omp target teams distribute } // expected-warning {{extra tokens at the end of '#pragma omp target teams distribute' are ignored}}37  for (int i = 0; i < argc; ++i)38    foo();39#pragma omp target teams distribute40  for (int i = 0; i < argc; ++i)41    foo();42// expected-warning@+1 {{extra tokens at the end of '#pragma omp target teams distribute' are ignored}}43#pragma omp target teams distribute unknown()44  for (int i = 0; i < argc; ++i)45    foo();46L1:47  for (int i = 0; i < argc; ++i)48    foo();49#pragma omp target teams distribute50  for (int i = 0; i < argc; ++i)51    foo();52#pragma omp target teams distribute53  for (int i = 0; i < argc; ++i) {54    goto L1; // expected-error {{use of undeclared label 'L1'}}55    argc++;56  }57 58  for (int i = 0; i < 10; ++i) {59    switch (argc) {60    case (0):61#pragma omp target teams distribute62      for (int i = 0; i < argc; ++i) {63        foo();64        break; // expected-error {{'break' statement cannot be used in OpenMP for loop}}65        continue;66      }67    default:68      break;69    }70  }71#pragma omp target teams distribute default(none) // expected-note {{explicit data sharing attribute requested here}}72  for (int i = 0; i < 10; ++i)73    ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}}74 75  goto L2; // expected-error {{use of undeclared label 'L2'}}76#pragma omp target teams distribute77  for (int i = 0; i < argc; ++i)78  L2:79  foo();80#pragma omp target teams distribute81  for (int i = 0; i < argc; ++i) {82    return 1; // expected-error {{cannot return from OpenMP region}}83  }84 85  [[]] // expected-error {{an attribute list cannot appear here}}86#pragma omp target teams distribute87      for (int n = 0; n < 100; ++n) {88  }89 90#pragma omp target teams distribute copyin(pvt) // expected-error {{unexpected OpenMP clause 'copyin' in directive '#pragma omp target teams distribute'}}91  for (int n = 0; n < 100; ++n) {}92 93  return 0;94}95 96void test_ordered() {97#pragma omp target teams distribute ordered // expected-error {{unexpected OpenMP clause 'ordered' in directive '#pragma omp target teams distribute'}}98  for (int i = 0; i < 16; ++i)99    ;100}101 102