1 // RUN: %clang_cc1 -verify -fopenmp -std=c++11 %s -Wuninitialized 2 3 // RUN: %clang_cc1 -verify -fopenmp-simd -std=c++11 %s -Wuninitialized 4 5 void xxx(int argc) { 6 int x; // expected-note {{initialize the variable 'x' to silence this warning}} 7 #pragma omp target 8 #pragma omp teams distribute parallel for simd 9 for (int i = 0; i < 10; ++i) 10 argc = x; // expected-warning {{variable 'x' is uninitialized when used here}} 11 } 12 13 void foo() { 14 } 15 16 static int pvt; 17 #pragma omp threadprivate(pvt) 18 19 #pragma omp teams distribute parallel for simd // expected-error {{unexpected OpenMP directive '#pragma omp teams distribute parallel for simd'}} 20 21 int main(int argc, char **argv) { 22 #pragma omp target 23 #pragma omp teams distribute parallel for simd 24 f; // expected-error {{use of undeclared identifier 'f'}} 25 #pragma omp target 26 #pragma omp teams distribute parallel for simd { // expected-warning {{extra tokens at the end of '#pragma omp teams distribute parallel for simd' are ignored}} 27 for (int i = 0; i < argc; ++i) 28 foo(); 29 #pragma omp target 30 #pragma omp teams distribute parallel for simd ( // expected-warning {{extra tokens at the end of '#pragma omp teams distribute parallel for simd' are ignored}} 31 for (int i = 0; i < argc; ++i) 32 foo(); 33 #pragma omp target 34 #pragma omp teams distribute parallel for simd[ // expected-warning {{extra tokens at the end of '#pragma omp teams distribute parallel for simd' are ignored}} 35 for (int i = 0; i < argc; ++i) 36 foo(); 37 #pragma omp target 38 #pragma omp teams distribute parallel for simd] // expected-warning {{extra tokens at the end of '#pragma omp teams distribute parallel for simd' are ignored}} 39 for (int i = 0; i < argc; ++i) 40 foo(); 41 #pragma omp target 42 #pragma omp teams distribute parallel for simd) // expected-warning {{extra tokens at the end of '#pragma omp teams distribute parallel for simd' are ignored}} 43 for (int i = 0; i < argc; ++i) 44 foo(); 45 #pragma omp target 46 #pragma omp teams distribute parallel for simd } // expected-warning {{extra tokens at the end of '#pragma omp teams distribute parallel for simd' are ignored}} 47 for (int i = 0; i < argc; ++i) 48 foo(); 49 #pragma omp target 50 #pragma omp teams distribute parallel for simd 51 for (int i = 0; i < argc; ++i) 52 foo(); 53 // expected-warning@+2 {{extra tokens at the end of '#pragma omp teams distribute parallel for simd' are ignored}} 54 #pragma omp target 55 #pragma omp teams distribute parallel for simd unknown() 56 for (int i = 0; i < argc; ++i) 57 foo(); 58 L1: 59 for (int i = 0; i < argc; ++i) 60 foo(); 61 #pragma omp target 62 #pragma omp teams distribute parallel for simd 63 for (int i = 0; i < argc; ++i) 64 foo(); 65 #pragma omp target 66 #pragma omp teams distribute parallel for simd 67 for (int i = 0; i < argc; ++i) { 68 goto L1; // expected-error {{use of undeclared label 'L1'}} 69 argc++; 70 } 71 72 for (int i = 0; i < 10; ++i) { 73 switch (argc) { 74 case (0): 75 #pragma omp target 76 #pragma omp teams distribute parallel for simd 77 for (int i = 0; i < argc; ++i) { 78 foo(); 79 break; // expected-error {{'break' statement cannot be used in OpenMP for loop}} 80 continue; 81 } 82 default: 83 break; 84 } 85 } 86 #pragma omp target 87 #pragma omp teams distribute parallel for simd default(none) // expected-note {{explicit data sharing attribute requested here}} 88 for (int i = 0; i < 10; ++i) 89 ++argc; // expected-error {{ariable 'argc' must have explicitly specified data sharing attributes}} 90 91 goto L2; // expected-error {{use of undeclared label 'L2'}} 92 #pragma omp target 93 #pragma omp teams distribute parallel for simd 94 for (int i = 0; i < argc; ++i) 95 L2: 96 foo(); 97 #pragma omp target 98 #pragma omp teams distribute parallel for simd 99 for (int i = 0; i < argc; ++i) { 100 return 1; // expected-error {{cannot return from OpenMP region}} 101 } 102 103 [[]] // expected-error {{an attribute list cannot appear here}} 104 #pragma omp target 105 #pragma omp teams distribute parallel for simd 106 for (int n = 0; n < 100; ++n) { 107 } 108 109 #pragma omp target 110 #pragma omp teams distribute parallel for simd copyin(pvt) // expected-error {{unexpected OpenMP clause 'copyin' in directive '#pragma omp teams distribute parallel for simd'}} 111 for (int n = 0; n < 100; ++n) {} 112 113 return 0; 114 } 115 116 void test_ordered() { 117 #pragma omp target 118 #pragma omp teams distribute parallel for simd ordered // expected-error {{unexpected OpenMP clause 'ordered' in directive '#pragma omp teams distribute parallel for simd'}} 119 for (int i = 0; i < 16; ++i) 120 ; 121 } 122 123