brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.6 KiB · bc1833d Raw
166 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 target23#pragma omp teams distribute simd collapse // expected-error {{expected '(' after 'collapse'}}24  for (int i = ST; i < N; i++)25    argv[0][i] = argv[0][i] - argv[0][i-ST];26 27#pragma omp target28#pragma omp teams distribute simd collapse ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}29  for (int i = ST; i < N; i++)30 31    argv[0][i] = argv[0][i] - argv[0][i-ST];32#pragma omp target33#pragma omp teams distribute simd collapse () // expected-error {{expected expression}}34  for (int i = ST; i < N; i++)35    argv[0][i] = argv[0][i] - argv[0][i-ST];36 37// expected-error@+3 {{expected ')'}} expected-note@+3 {{to match this '('}}38// expected-error@+2 2 {{integral constant expression}} expected-note@+2 0+{{constant expression}}39#pragma omp target40#pragma omp teams distribute simd collapse (argc 41  for (int i = ST; i < N; i++)42    argv[0][i] = argv[0][i] - argv[0][i-ST];43 44// expected-error@+2 2 {{argument to 'collapse' clause must be a strictly positive integer value}}45#pragma omp target46#pragma omp teams distribute simd collapse (ST // expected-error {{expected ')'}} expected-note {{to match this '('}}47  for (int i = ST; i < N; i++)48    argv[0][i] = argv[0][i] - argv[0][i-ST];49 50#pragma omp target51#pragma omp teams distribute simd collapse (1)) // expected-warning {{extra tokens at the end of '#pragma omp teams distribute simd' are ignored}}52  for (int i = ST; i < N; i++)53    argv[0][i] = argv[0][i] - argv[0][i-ST];54 55#pragma omp target56#pragma omp teams distribute simd collapse ((ST > 0) ? 1 + ST : 2) // expected-note 2 {{as specified in 'collapse' clause}}57  for (int i = ST; i < N; i++)58    argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp teams distribute simd', but found only 1}}59 60// expected-error@+4 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'collapse' clause}}61// expected-error@+3 {{argument to 'collapse' clause must be a strictly positive integer value}}62// expected-error@+2 2 {{integral constant expression}} expected-note@+2 0+{{constant expression}}63#pragma omp target64#pragma omp teams distribute simd collapse (foobool(argc)), collapse (true), collapse (-5)65  for (int i = ST; i < N; i++)66    argv[0][i] = argv[0][i] - argv[0][i-ST];67 68#pragma omp distribute collapse (S) // expected-error {{'S' does not refer to a value}}69  for (int i = ST; i < N; i++)70    argv[0][i] = argv[0][i] - argv[0][i-ST];71 72#if __cplusplus <= 199711L73  // expected-error@+5 2 {{integral constant expression}} expected-note@+5 0+{{constant expression}}74#else75  // expected-error@+3 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}76#endif77#pragma omp target78#pragma omp teams distribute simd collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}79  for (int i = ST; i < N; i++)80    argv[0][i] = argv[0][i] - argv[0][i-ST];81 82#pragma omp target83#pragma omp teams distribute simd collapse (1)84  for (int i = ST; i < N; i++)85    argv[0][i] = argv[0][i] - argv[0][i-ST];86 87#pragma omp target88#pragma omp teams distribute simd collapse (N) // expected-error {{argument to 'collapse' clause must be a strictly positive integer value}}89  for (T i = ST; i < N; i++)90    argv[0][i] = argv[0][i] - argv[0][i-ST];91 92#pragma omp target93#pragma omp teams distribute simd collapse (2) // expected-note {{as specified in 'collapse' clause}}94  foo(); // expected-error {{expected 2 for loops after '#pragma omp teams distribute simd'}}95  return argc;96}97 98int main(int argc, char **argv) {99#pragma omp target100#pragma omp teams distribute simd collapse // expected-error {{expected '(' after 'collapse'}}101  for (int i = 4; i < 12; i++)102    argv[0][i] = argv[0][i] - argv[0][i-4];103 104#pragma omp target105#pragma omp teams distribute simd collapse ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}106  for (int i = 4; i < 12; i++)107    argv[0][i] = argv[0][i] - argv[0][i-4];108 109#pragma omp target110#pragma omp teams distribute simd collapse () // expected-error {{expected expression}}111  for (int i = 4; i < 12; i++)112    argv[0][i] = argv[0][i] - argv[0][i-4];113 114#pragma omp target115#pragma omp teams distribute simd collapse (4 // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-note {{as specified in 'collapse' clause}}116  for (int i = 4; i < 12; i++)117    argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp teams distribute simd', but found only 1}}118 119#pragma omp target120#pragma omp teams distribute simd collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp teams distribute simd' are ignored}}  expected-note {{as specified in 'collapse' clause}}121  for (int i = 4; i < 12; i++)122    argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp teams distribute simd', but found only 1}}123 124#pragma omp target125#pragma omp teams distribute simd collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}} expected-note 0+{{constant expression}}126  for (int i = 4; i < 12; i++)127    argv[0][i] = argv[0][i] - argv[0][i-4];128 129// expected-error@+4 {{integral constant expression}} expected-note@+4 0+{{constant expression}}130// expected-error@+3 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'collapse' clause}}131// expected-error@+2 {{argument to 'collapse' clause must be a strictly positive integer value}}132#pragma omp target133#pragma omp teams distribute simd collapse (foobool(argc)), collapse (true), collapse (-5) 134  for (int i = 4; i < 12; i++)135    argv[0][i] = argv[0][i] - argv[0][i-4];136 137#pragma omp target138#pragma omp teams distribute simd collapse (S1) // expected-error {{'S1' does not refer to a value}}139  for (int i = 4; i < 12; i++)140    argv[0][i] = argv[0][i] - argv[0][i-4];141 142#if __cplusplus >= 201103L143  // expected-error@+5 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}144#else145  // expected-error@+3 {{integral constant expression}} expected-note@+3 0+{{constant expression}}146#endif147#pragma omp target148#pragma omp teams distribute simd collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}149  for (int i = 4; i < 12; i++)150    argv[0][i] = argv[0][i] - argv[0][i-4];151 152// expected-error@+4 {{statement after '#pragma omp teams distribute simd' must be a for loop}}153// expected-note@+2 {{in instantiation of function template specialization 'tmain<int, char, -1, -2>' requested here}}154#pragma omp target155#pragma omp teams distribute simd collapse(collapse(tmain<int, char, -1, -2>(argc, argv) // expected-error 2 {{expected ')'}} expected-note 2 {{to match this '('}}156  foo();157 158#pragma omp target159#pragma omp teams distribute simd collapse (2) // expected-note {{as specified in 'collapse' clause}}160  foo(); // expected-error {{expected 2 for loops after '#pragma omp teams distribute simd'}}161 162// expected-note@+1 {{in instantiation of function template specialization 'tmain<int, char, 1, 0>' requested here}}163  return tmain<int, char, 1, 0>(argc, argv);164}165 166