1*40f9bf08SJohannes Doerfert // RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=45 %s -Wuninitialized
2*40f9bf08SJohannes Doerfert
3*40f9bf08SJohannes Doerfert // RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=45 %s -Wuninitialized
4*40f9bf08SJohannes Doerfert
5*40f9bf08SJohannes Doerfert // RUN: %clang_cc1 -verify -fopenmp %s -Wuninitialized
6*40f9bf08SJohannes Doerfert // RUN: %clang_cc1 -verify -fopenmp-simd %s -Wuninitialized
7*40f9bf08SJohannes Doerfert
foo()8*40f9bf08SJohannes Doerfert void foo() {
9*40f9bf08SJohannes Doerfert }
10*40f9bf08SJohannes Doerfert
foobool(int argc)11*40f9bf08SJohannes Doerfert bool foobool(int argc) {
12*40f9bf08SJohannes Doerfert return argc;
13*40f9bf08SJohannes Doerfert }
14*40f9bf08SJohannes Doerfert
15*40f9bf08SJohannes Doerfert struct S1; // expected-note {{declared here}}
16*40f9bf08SJohannes Doerfert
17*40f9bf08SJohannes Doerfert template <class T, class S> // expected-note {{declared here}}
tmain(T argc,S ** argv)18*40f9bf08SJohannes Doerfert int tmain(T argc, S **argv) {
19*40f9bf08SJohannes Doerfert T z;
20*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem // expected-error {{expected '(' after 'ompx_dyn_cgroup_mem'}}
21*40f9bf08SJohannes Doerfert foo();
22*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
23*40f9bf08SJohannes Doerfert foo();
24*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem () // expected-error {{expected expression}}
25*40f9bf08SJohannes Doerfert foo();
26*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem (argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
27*40f9bf08SJohannes Doerfert foo();
28*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem (argc)) // expected-warning {{extra tokens at the end of '#pragma omp target' are ignored}}
29*40f9bf08SJohannes Doerfert foo();
30*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem (argc > 0 ? argv[1] : argv[2]) // expected-error {{expression must have integral or unscoped enumeration type, not 'char *'}}
31*40f9bf08SJohannes Doerfert foo();
32*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem (foobool(argc)), ompx_dyn_cgroup_mem (true) // expected-error {{directive '#pragma omp target' cannot contain more than one 'ompx_dyn_cgroup_mem' clause}}
33*40f9bf08SJohannes Doerfert foo();
34*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem (S) // expected-error {{'S' does not refer to a value}}
35*40f9bf08SJohannes Doerfert foo();
36*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem (argv[1]=2) // expected-error {{expression must have integral or unscoped enumeration type, not 'char *'}} expected-error {{expected ')'}} expected-note {{to match this '('}}
37*40f9bf08SJohannes Doerfert foo();
38*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem (argc argc) // expected-error {{expected ')'}} expected-note {{to match this '('}}
39*40f9bf08SJohannes Doerfert foo();
40*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem(argc+z)
41*40f9bf08SJohannes Doerfert foo();
42*40f9bf08SJohannes Doerfert return 0;
43*40f9bf08SJohannes Doerfert }
44*40f9bf08SJohannes Doerfert
main(int argc,char ** argv)45*40f9bf08SJohannes Doerfert int main(int argc, char **argv) {
46*40f9bf08SJohannes Doerfert int z;
47*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem // expected-error {{expected '(' after 'ompx_dyn_cgroup_mem'}}
48*40f9bf08SJohannes Doerfert foo();
49*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
50*40f9bf08SJohannes Doerfert foo();
51*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem () // expected-error {{expected expression}}
52*40f9bf08SJohannes Doerfert foo();
53*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem (argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
54*40f9bf08SJohannes Doerfert foo();
55*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem (argc)) // expected-warning {{extra tokens at the end of '#pragma omp target' are ignored}}
56*40f9bf08SJohannes Doerfert foo();
57*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem (argc > 0 ? argv[1] : argv[2]) // expected-error {{expression must have integral or unscoped enumeration type, not 'char *'}}
58*40f9bf08SJohannes Doerfert foo();
59*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem (foobool(argc)), ompx_dyn_cgroup_mem (true) // expected-error {{directive '#pragma omp target' cannot contain more than one 'ompx_dyn_cgroup_mem' clause}}
60*40f9bf08SJohannes Doerfert foo();
61*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem (S1) // expected-error {{'S1' does not refer to a value}}
62*40f9bf08SJohannes Doerfert foo();
63*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem (argv[1]=2) // expected-error {{expression must have integral or unscoped enumeration type, not 'char *'}} expected-error {{expected ')'}} expected-note {{to match this '('}}
64*40f9bf08SJohannes Doerfert foo();
65*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem (argc argc) // expected-error {{expected ')'}} expected-note {{to match this '('}}
66*40f9bf08SJohannes Doerfert foo();
67*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem (1 0) // expected-error {{expected ')'}} expected-note {{to match this '('}}
68*40f9bf08SJohannes Doerfert foo();
69*40f9bf08SJohannes Doerfert #pragma omp target ompx_dyn_cgroup_mem(ompx_dyn_cgroup_mem(tmain(argc, argv) // expected-error2 {{expected ')'}} expected-note2 {{to match this '('}} expected-note {{in instantiation of function template specialization 'tmain<int, char>' requested here}}
70*40f9bf08SJohannes Doerfert foo();
71*40f9bf08SJohannes Doerfert
72*40f9bf08SJohannes Doerfert return tmain(argc, argv);
73*40f9bf08SJohannes Doerfert }
74*40f9bf08SJohannes Doerfert
75