brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.7 KiB · cd3d38a Raw
103 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp -std=c++11 %s -Wuninitialized2 3// RUN: %clang_cc1 -verify -fopenmp-simd -std=c++11 %s -Wuninitialized4 5void xxx(int argc) {6  int x; // expected-note {{initialize the variable 'x' to silence this warning}}7#pragma omp target teams distribute 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 15static int pvt;16#pragma omp threadprivate(pvt)17 18#pragma omp target teams distribute simd // expected-error {{unexpected OpenMP directive '#pragma omp target teams distribute simd'}}19 20int main(int argc, char **argv) {21#pragma omp target teams distribute simd { // expected-warning {{extra tokens at the end of '#pragma omp target teams distribute simd' are ignored}}22  for (int i = 0; i < argc; ++i)23    foo();24#pragma omp target teams distribute simd ( // expected-warning {{extra tokens at the end of '#pragma omp target teams distribute simd' are ignored}}25  for (int i = 0; i < argc; ++i)26    foo();27#pragma omp target teams distribute simd[ // expected-warning {{extra tokens at the end of '#pragma omp target teams distribute simd' are ignored}}28  for (int i = 0; i < argc; ++i)29    foo();30#pragma omp target teams distribute simd] // expected-warning {{extra tokens at the end of '#pragma omp target teams distribute simd' are ignored}}31  for (int i = 0; i < argc; ++i)32    foo();33#pragma omp target teams distribute simd) // expected-warning {{extra tokens at the end of '#pragma omp target teams distribute simd' are ignored}}34  for (int i = 0; i < argc; ++i)35    foo();36#pragma omp target teams distribute simd } // expected-warning {{extra tokens at the end of '#pragma omp target teams distribute simd' are ignored}}37  for (int i = 0; i < argc; ++i)38    foo();39#pragma omp target teams distribute simd40  for (int i = 0; i < argc; ++i)41    foo();42// expected-warning@+1 {{extra tokens at the end of '#pragma omp target teams distribute simd' are ignored}}43#pragma omp target teams distribute simd 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 distribute simd50  for (int i = 0; i < argc; ++i)51    foo();52#pragma omp target teams distribute simd53  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 distribute simd62      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// expected-error@+1 {{unexpected OpenMP clause 'default' in directive '#pragma omp target teams distribute simd'}}72#pragma omp target teams distribute simd default(none)73  for (int i = 0; i < 10; ++i)74    ++argc;75 76  goto L2; // expected-error {{use of undeclared label 'L2'}}77#pragma omp target teams distribute simd78  for (int i = 0; i < argc; ++i)79  L2:80  foo();81#pragma omp target teams distribute simd82  for (int i = 0; i < argc; ++i) {83    return 1; // expected-error {{cannot return from OpenMP region}}84  }85 86  [[]] // expected-error {{an attribute list cannot appear here}}87#pragma omp target teams distribute simd88      for (int n = 0; n < 100; ++n) {89  }90 91#pragma omp target teams distribute simd copyin(pvt) // expected-error {{unexpected OpenMP clause 'copyin' in directive '#pragma omp target teams distribute simd'}}92  for (int n = 0; n < 100; ++n) {}93 94  return 0;95}96 97void test_ordered() {98#pragma omp target teams distribute simd ordered // expected-error {{unexpected OpenMP clause 'ordered' in directive '#pragma omp target teams distribute simd'}}99  for (int i = 0; i < 16; ++i)100    ;101}102 103