106 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-apple-macos10.7.0 -verify -fopenmp -ferror-limit 100 -o - %s -Wuninitialized2 3// RUN: %clang_cc1 -triple x86_64-apple-macos10.7.0 -verify -fopenmp-simd -ferror-limit 100 -o - %s -Wuninitialized4 5void foo() {6}7 8bool foobool(int argc) {9 return argc;10}11 12struct S1; // expected-note {{declared here}} expected-note {{declared here}}13 14template <class T, int N>15T tmain(T argc) {16 T b = argc, c, d, e, f, g, z;17 char ** argv;18 static T a;19#pragma omp target20#pragma omp teams21#pragma omp distribute parallel for dist_schedule // expected-error {{expected '(' after 'dist_schedule'}}22 for (int i = 0; i < 10; ++i) foo();23#pragma omp target24#pragma omp teams25#pragma omp distribute parallel for dist_schedule ( // expected-error {{expected 'static' in OpenMP clause 'dist_schedule'}} expected-error {{expected ')'}} expected-note {{to match this '('}}26 for (int i = 0; i < 10; ++i) foo();27#pragma omp target28#pragma omp teams29#pragma omp distribute parallel for dist_schedule () // expected-error {{expected 'static' in OpenMP clause 'dist_schedule'}}30 for (int i = 0; i < 10; ++i) foo();31#pragma omp target32#pragma omp teams33#pragma omp distribute parallel for dist_schedule (static // expected-error {{expected ')'}} expected-note {{to match this '('}}34 for (int i = 0; i < 10; ++i) foo();35#pragma omp target36#pragma omp teams37#pragma omp distribute parallel for dist_schedule (static, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}38 for (int i = 0; i < 10; ++i) foo();39#pragma omp target40#pragma omp teams41#pragma omp distribute parallel for dist_schedule (argc)) // expected-error {{expected 'static' in OpenMP clause 'dist_schedule'}} expected-warning {{extra tokens at the end of '#pragma omp distribute parallel for' are ignored}}42 for (int i = 0; i < 10; ++i) foo();43#pragma omp target44#pragma omp teams45#pragma omp distribute parallel for dist_schedule (static, argc > 0 ? argv[1] : argv[2]) // expected-error2 {{expression must have integral or unscoped enumeration type, not 'char *'}}46 for (int i = 0; i < 10; ++i) foo();47#pragma omp target48#pragma omp teams49#pragma omp distribute parallel for dist_schedule (static), dist_schedule (static, z+1) // expected-error {{directive '#pragma omp distribute parallel for' cannot contain more than one 'dist_schedule' clause}}50 for (int i = 0; i < 10; ++i) foo();51#pragma omp target52#pragma omp teams53#pragma omp distribute parallel for dist_schedule (static, S1) // expected-error {{'S1' does not refer to a value}}54 for (int i = 0; i < 10; ++i) foo();55#pragma omp target56#pragma omp teams57#pragma omp distribute parallel for dist_schedule (static, argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error3 {{expression must have integral or unscoped enumeration type, not 'char *'}}58 for (int i = 0; i < 10; ++i) foo();59 return T();60}61 62int main(int argc, char **argv) {63 int z;64#pragma omp target65#pragma omp teams66#pragma omp distribute parallel for dist_schedule // expected-error {{expected '(' after 'dist_schedule'}}67 for (int i = 0; i < 10; ++i) foo();68#pragma omp target69#pragma omp teams70#pragma omp distribute parallel for dist_schedule ( // expected-error {{expected 'static' in OpenMP clause 'dist_schedule'}} expected-error {{expected ')'}} expected-note {{to match this '('}}71 for (int i = 0; i < 10; ++i) foo();72#pragma omp target73#pragma omp teams74#pragma omp distribute parallel for dist_schedule () // expected-error {{expected 'static' in OpenMP clause 'dist_schedule'}}75 for (int i = 0; i < 10; ++i) foo();76#pragma omp target77#pragma omp teams78#pragma omp distribute parallel for dist_schedule (static // expected-error {{expected ')'}} expected-note {{to match this '('}}79 for (int i = 0; i < 10; ++i) foo();80#pragma omp target81#pragma omp teams82#pragma omp distribute parallel for dist_schedule (static, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}83 for (int i = 0; i < 10; ++i) foo();84#pragma omp target85#pragma omp teams86#pragma omp distribute parallel for dist_schedule (argc)) // expected-error {{expected 'static' in OpenMP clause 'dist_schedule'}} expected-warning {{extra tokens at the end of '#pragma omp distribute parallel for' are ignored}}87 for (int i = 0; i < 10; ++i) foo();88#pragma omp target89#pragma omp teams90#pragma omp distribute parallel for dist_schedule (static, argc > 0 ? argv[1] : argv[2]) // expected-error {{expression must have integral or unscoped enumeration type, not 'char *'}}91 for (int i = 0; i < 10; ++i) foo();92#pragma omp target93#pragma omp teams94#pragma omp distribute parallel for dist_schedule (static), dist_schedule (static, z+1) // expected-error {{directive '#pragma omp distribute parallel for' cannot contain more than one 'dist_schedule' clause}}95 for (int i = 0; i < 10; ++i) foo();96#pragma omp target97#pragma omp teams98#pragma omp distribute parallel for dist_schedule (static, S1) // expected-error {{'S1' does not refer to a value}}99 for (int i = 0; i < 10; ++i) foo();100#pragma omp target101#pragma omp teams102#pragma omp distribute parallel for dist_schedule (static, argv[1]=2) // expected-error {{expression must have integral or unscoped enumeration type, not 'char *'}} expected-error {{expected ')'}} expected-note {{to match this '('}}103 for (int i = 0; i < 10; ++i) foo();104 return (tmain<int, 5>(argc) + tmain<char, 1>(argv[0][0])); // expected-note {{in instantiation of function template specialization 'tmain<int, 5>' requested here}} expected-note {{in instantiation of function template specialization 'tmain<char, 1>' requested here}}105}106