brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.3 KiB · ef22b5f Raw
144 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#pragma omp target teams distribute collapse // expected-error {{expected '(' after 'collapse'}}23  for (int i = ST; i < N; i++)24    argv[0][i] = argv[0][i] - argv[0][i-ST];25 26#pragma omp target teams distribute collapse ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}27  for (int i = ST; i < N; i++)28 29    argv[0][i] = argv[0][i] - argv[0][i-ST];30#pragma omp target teams distribute collapse () // expected-error {{expected expression}}31  for (int i = ST; i < N; i++)32    argv[0][i] = argv[0][i] - argv[0][i-ST];33 34// expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}35// expected-error@+1 2 {{integral constant expression}} expected-note@+1 0+{{constant expression}}36#pragma omp target teams distribute collapse (argc 37  for (int i = ST; i < N; i++)38    argv[0][i] = argv[0][i] - argv[0][i-ST];39 40// expected-error@+1 2 {{argument to 'collapse' clause must be a strictly positive integer value}}41#pragma omp target teams distribute collapse (ST // expected-error {{expected ')'}} expected-note {{to match this '('}}42  for (int i = ST; i < N; i++)43    argv[0][i] = argv[0][i] - argv[0][i-ST];44 45#pragma omp target teams distribute collapse (1)) // expected-warning {{extra tokens at the end of '#pragma omp target teams distribute' are ignored}}46  for (int i = ST; i < N; i++)47    argv[0][i] = argv[0][i] - argv[0][i-ST];48 49#pragma omp target teams distribute collapse ((ST > 0) ? 1 + ST : 2) // expected-note 2 {{as specified in 'collapse' clause}}50  for (int i = ST; i < N; i++)51    argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp target teams distribute', but found only 1}}52 53// expected-error@+3 2 {{directive '#pragma omp target teams distribute' cannot contain more than one 'collapse' clause}}54// expected-error@+2 {{argument to 'collapse' clause must be a strictly positive integer value}}55// expected-error@+1 2 {{integral constant expression}} expected-note@+1 0+{{constant expression}}56#pragma omp target teams distribute collapse (foobool(argc)), collapse (true), collapse (-5)57  for (int i = ST; i < N; i++)58    argv[0][i] = argv[0][i] - argv[0][i-ST];59 60#pragma omp target teams distribute collapse (S) // expected-error {{'S' does not refer to a value}}61  for (int i = ST; i < N; i++)62    argv[0][i] = argv[0][i] - argv[0][i-ST];63 64#if __cplusplus <= 199711L65  // expected-error@+4 2 {{integral constant expression}} expected-note@+4 0+{{constant expression}}66#else67  // expected-error@+2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}68#endif69#pragma omp target teams distribute collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}70  for (int i = ST; i < N; i++)71    argv[0][i] = argv[0][i] - argv[0][i-ST];72 73#pragma omp target teams distribute collapse (1)74  for (int i = ST; i < N; i++)75    argv[0][i] = argv[0][i] - argv[0][i-ST];76 77#pragma omp target teams distribute collapse (N) // expected-error {{argument to 'collapse' clause must be a strictly positive integer value}}78  for (T i = ST; i < N; i++)79    argv[0][i] = argv[0][i] - argv[0][i-ST];80 81#pragma omp target teams distribute collapse (2) // expected-note {{as specified in 'collapse' clause}}82  foo(); // expected-error {{expected 2 for loops after '#pragma omp target teams distribute'}}83  return argc;84}85 86int main(int argc, char **argv) {87#pragma omp target teams distribute collapse // expected-error {{expected '(' after 'collapse'}}88  for (int i = 4; i < 12; i++)89    argv[0][i] = argv[0][i] - argv[0][i-4];90 91#pragma omp target teams distribute collapse ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}92  for (int i = 4; i < 12; i++)93    argv[0][i] = argv[0][i] - argv[0][i-4];94 95#pragma omp target teams distribute collapse () // expected-error {{expected expression}}96  for (int i = 4; i < 12; i++)97    argv[0][i] = argv[0][i] - argv[0][i-4];98 99#pragma omp target teams distribute collapse (4 // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-note {{as specified in 'collapse' clause}}100  for (int i = 4; i < 12; i++)101    argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute', but found only 1}}102 103#pragma omp target teams distribute collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp target teams distribute' are ignored}}  expected-note {{as specified in 'collapse' clause}}104  for (int i = 4; i < 12; i++)105    argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute', but found only 1}}106 107// expected-error@+1 {{integral constant expression}} expected-note@+1 0+{{constant expression}}108#pragma omp target teams distribute collapse (foobool(1) > 0 ? 1 : 2)109  for (int i = 4; i < 12; i++)110    argv[0][i] = argv[0][i] - argv[0][i-4];111 112// expected-error@+3 {{integral constant expression}} expected-note@+3 0+{{constant expression}}113// expected-error@+2 2 {{directive '#pragma omp target teams distribute' cannot contain more than one 'collapse' clause}}114// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}115#pragma omp target teams distribute collapse (foobool(argc)), collapse (true), collapse (-5) 116  for (int i = 4; i < 12; i++)117    argv[0][i] = argv[0][i] - argv[0][i-4];118 119#pragma omp target teams distribute collapse (S1) // expected-error {{'S1' does not refer to a value}}120  for (int i = 4; i < 12; i++)121    argv[0][i] = argv[0][i] - argv[0][i-4];122 123#if __cplusplus <= 199711L124  // expected-error@+4 {{integral constant expression}} expected-note@+4 0+{{constant expression}}125#else126  // expected-error@+2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}127#endif128#pragma omp target teams distribute collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}129  for (int i = 4; i < 12; i++)130    argv[0][i] = argv[0][i] - argv[0][i-4];131 132// expected-error@+3 {{statement after '#pragma omp target teams distribute' must be a for loop}}133// expected-note@+1 {{in instantiation of function template specialization 'tmain<int, char, -1, -2>' requested here}}134#pragma omp target teams distribute collapse(collapse(tmain<int, char, -1, -2>(argc, argv) // expected-error 2 {{expected ')'}} expected-note 2 {{to match this '('}}135  foo();136 137#pragma omp target teams distribute collapse (2) // expected-note {{as specified in 'collapse' clause}}138  foo(); // expected-error {{expected 2 for loops after '#pragma omp target teams distribute'}}139 140// expected-note@+1 {{in instantiation of function template specialization 'tmain<int, char, 1, 0>' requested here}}141  return tmain<int, char, 1, 0>(argc, argv);142}143 144