brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.0 KiB · 8c3c009 Raw
179 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp %s -Wuninitialized2// RUN: %clang_cc1 -verify -fopenmp -std=c++98 %s -Wuninitialized3// RUN: %clang_cc1 -verify -fopenmp -std=c++11 %s -Wuninitialized4 5// RUN: %clang_cc1 -verify -fopenmp-simd %s -Wuninitialized6// RUN: %clang_cc1 -verify -fopenmp-simd -std=c++98 %s -Wuninitialized7// RUN: %clang_cc1 -verify -fopenmp-simd -std=c++11 %s -Wuninitialized8 9// expected-note@* 0+{{declared here}}10 11void foo() {12}13 14bool foobool(int argc) {15  return argc;16}17 18struct S1;19 20template <class T, typename S, int N, int ST>21T tmain(T argc, S **argv) {22 23#pragma omp target24#pragma omp teams25#pragma omp distribute simd safelen // expected-error {{expected '(' after 'safelen'}}26  for (int i = ST; i < N; i++)27    argv[0][i] = argv[0][i] - argv[0][i-ST];28 29#pragma omp target30#pragma omp teams31#pragma omp distribute simd safelen ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}32  for (int i = ST; i < N; i++)33    argv[0][i] = argv[0][i] - argv[0][i-ST];34 35#pragma omp target36#pragma omp teams37#pragma omp distribute simd safelen () // expected-error {{expected expression}}38  for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];39 40#pragma omp target41#pragma omp teams42#pragma omp distribute simd safelen (argc  // expected-note {{to match this '('}} expected-error 2 {{integral constant expression}} expected-note 0+{{constant expression}} expected-error {{expected ')'}}43  for (int i = ST; i < N; i++) 44    argv[0][i] = argv[0][i] - argv[0][i-ST];45  46#pragma omp target47#pragma omp teams48#pragma omp distribute simd safelen (ST // expected-error {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error {{expected ')'}} expected-note {{to match this '('}}49  for (int i = ST; i < N; i++)50    argv[0][i] = argv[0][i] - argv[0][i-ST];51 52#pragma omp target53#pragma omp teams54#pragma omp distribute simd safelen (1)) // expected-warning {{extra tokens at the end of '#pragma omp distribute simd' are ignored}}55  for (int i = ST; i < N; i++)56     argv[0][i] = argv[0][i] - argv[0][i-ST];57 58#pragma omp target59#pragma omp teams60#pragma omp distribute simd safelen ((ST > 0) ? 1 + ST : 2)61  for (int i = ST; i < N; i++) 62    argv[0][i] = argv[0][i] - argv[0][i-ST];63 64#pragma omp target65#pragma omp teams66// expected-error@+3 2 {{directive '#pragma omp distribute simd' cannot contain more than one 'safelen' clause}}67// expected-error@+2 {{argument to 'safelen' clause must be a strictly positive integer value}}68// expected-error@+1 2 {{integral constant expression}} expected-note@+1 0+{{constant expression}}69#pragma omp distribute simd safelen (foobool(argc)), safelen (true), safelen (-5)70  for (int i = ST; i < N; i++)71    argv[0][i] = argv[0][i] - argv[0][i-ST];72 73#pragma omp target74#pragma omp teams75#pragma omp distribute simd safelen (S) // expected-error {{'S' does not refer to a value}}76  for (int i = ST; i < N; i++)77    argv[0][i] = argv[0][i] - argv[0][i-ST];78 79#if __cplusplus <= 199711L80  // expected-error@+6 2 {{integral constant expression}} expected-note@+6 0+{{constant expression}}81#else82  // expected-error@+4 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}83#endif84#pragma omp target85#pragma omp teams86#pragma omp distribute simd safelen (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}87  for (int i = ST; i < N; i++)88    argv[0][i] = argv[0][i] - argv[0][i-ST];89 90#pragma omp target91#pragma omp teams92#pragma omp distribute simd safelen (4)93  for (int i = ST; i < N; i++)94    argv[0][i] = argv[0][i] - argv[0][i-ST];95 96#pragma omp target97#pragma omp teams98#pragma omp distribute simd safelen (N) // expected-error {{argument to 'safelen' clause must be a strictly positive integer value}}99  for (T i = ST; i < N; i++)100    argv[0][i] = argv[0][i] - argv[0][i-ST];101 102  return argc;103}104 105int main(int argc, char **argv) {106#pragma omp target107#pragma omp teams108#pragma omp parallel for simd safelen // expected-error {{expected '(' after 'safelen'}}109  for (int i = 4; i < 12; i++)110    argv[0][i] = argv[0][i] - argv[0][i-4];111 112#pragma omp target113#pragma omp teams114#pragma omp parallel for simd safelen ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}115  for (int i = 4; i < 12; i++)116    argv[0][i] = argv[0][i] - argv[0][i-4];117 118#pragma omp target119#pragma omp teams120#pragma omp parallel for simd safelen () // expected-error {{expected expression}}121  for (int i = 4; i < 12; i++)122    argv[0][i] = argv[0][i] - argv[0][i-4];123 124#pragma omp target125#pragma omp teams126#pragma omp parallel for simd safelen (4 // expected-error {{expected ')'}} expected-note {{to match this '('}}127  for (int i = 4; i < 12; i++)128    argv[0][i] = argv[0][i] - argv[0][i-4];129 130#pragma omp target131#pragma omp teams132#pragma omp parallel for simd safelen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp parallel for simd' are ignored}}133  for (int i = 4; i < 12; i++)134    argv[0][i] = argv[0][i] - argv[0][i-4];135  136 137#pragma omp target138#pragma omp teams139#pragma omp parallel for simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}} expected-note 0+{{constant expression}}140  for (int i = 4; i < 12; i++)141    argv[0][i] = argv[0][i] - argv[0][i-4];142 143#pragma omp target144#pragma omp teams145// expected-error@+3 {{argument to 'safelen' clause must be a strictly positive integer value}}146// expected-error@+2 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'safelen' clause}}147// expected-error@+1 {{integral constant expression}} expected-note@+1 0+{{constant expression}}148#pragma omp parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5)149  for (int i = 4; i < 12; i++)150    argv[0][i] = argv[0][i] - argv[0][i-4];151 152#pragma omp target153#pragma omp teams154#pragma omp parallel for simd safelen (S1) // expected-error {{'S1' does not refer to a value}}155  for (int i = 4; i < 12; i++)156    argv[0][i] = argv[0][i] - argv[0][i-4];157 158#if __cplusplus <= 199711L159  // expected-error@+6 {{integral constant expression}} expected-note@+6 0+{{constant expression}}160#else161  // expected-error@+4 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}162#endif163#pragma omp target164#pragma omp teams165#pragma omp distribute simd safelen (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}166  for (int i = 4; i < 12; i++)167    argv[0][i] = argv[0][i] - argv[0][i-4];168 169  // expected-note@+3 {{in instantiation of function template specialization 'tmain<int, char, -1, -2>' requested here}}170#pragma omp target171#pragma omp teams172#pragma omp distribute simd safelen(safelen(tmain<int, char, -1, -2>(argc, argv) // expected-error 2 {{expected ')'}} expected-note 2 {{to match this '('}}173  foo(); // expected-error {{statement after '#pragma omp distribute simd' must be a for loop}}174 175  // expected-note@+1 {{in instantiation of function template specialization 'tmain<int, char, 12, 4>' requested here}}176  return tmain<int, char, 12, 4>(argc, argv);177}178 179