102 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 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 simd // expected-error {{unexpected OpenMP directive '#pragma omp target simd'}}19 20int main(int argc, char **argv) {21#pragma omp target simd { // expected-warning {{extra tokens at the end of '#pragma omp target simd' are ignored}}22 for (int i = 0; i < argc; ++i)23 foo();24#pragma omp target simd ( // expected-warning {{extra tokens at the end of '#pragma omp target simd' are ignored}}25 for (int i = 0; i < argc; ++i)26 foo();27#pragma omp target simd[ // expected-warning {{extra tokens at the end of '#pragma omp target simd' are ignored}}28 for (int i = 0; i < argc; ++i)29 foo();30#pragma omp target simd] // expected-warning {{extra tokens at the end of '#pragma omp target simd' are ignored}}31 for (int i = 0; i < argc; ++i)32 foo();33#pragma omp target simd) // expected-warning {{extra tokens at the end of '#pragma omp target simd' are ignored}}34 for (int i = 0; i < argc; ++i)35 foo();36#pragma omp target simd } // expected-warning {{extra tokens at the end of '#pragma omp target simd' are ignored}}37 for (int i = 0; i < argc; ++i)38 foo();39#pragma omp target simd40 for (int i = 0; i < argc; ++i)41 foo();42// expected-warning@+1 {{extra tokens at the end of '#pragma omp target simd' are ignored}}43#pragma omp target 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 simd50 for (int i = 0; i < argc; ++i)51 foo();52#pragma omp target 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 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#pragma omp target simd default(none) // expected-error {{unexpected OpenMP clause 'default' in directive '#pragma omp target simd'}}72 for (int i = 0; i < 10; ++i)73 ++argc;74 75 goto L2; // expected-error {{use of undeclared label 'L2'}}76#pragma omp target simd77 for (int i = 0; i < argc; ++i)78 L2:79 foo();80#pragma omp target simd81 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 simd87 for (int n = 0; n < 100; ++n) {88 }89 90#pragma omp target simd copyin(pvt) // expected-error {{unexpected OpenMP clause 'copyin' in directive '#pragma omp target simd'}}91 for (int n = 0; n < 100; ++n) {}92 93 return 0;94}95 96void test_ordered() {97#pragma omp target simd ordered // expected-error {{unexpected OpenMP clause 'ordered' in directive '#pragma omp target simd'}}98 for (int i = 0; i < 16; ++i)99 ;100}101 102