xref: /llvm-project/clang/test/OpenMP/declare_target_variables_ast_print.cpp (revision 58eba709a330e4c83de0a98b50fc0acf26cb4344)
1453e02caSRitanya B Bharadwaj // RUN: %clang_cc1 -w -verify -fopenmp -I %S/Inputs -ast-print %s | FileCheck %s --check-prefix=CHECK
2453e02caSRitanya B Bharadwaj // expected-no-diagnostics
3453e02caSRitanya B Bharadwaj 
4453e02caSRitanya B Bharadwaj static int variable = 100;
5453e02caSRitanya B Bharadwaj static float variable1 = 200;
6453e02caSRitanya B Bharadwaj static float variable2 = variable1;
7453e02caSRitanya B Bharadwaj 
8453e02caSRitanya B Bharadwaj static int var = 1;
9453e02caSRitanya B Bharadwaj 
10453e02caSRitanya B Bharadwaj static int var1 = 10;
11453e02caSRitanya B Bharadwaj static int *var2 = &var1;
12453e02caSRitanya B Bharadwaj static int **ptr1 = &var2;
13453e02caSRitanya B Bharadwaj 
14453e02caSRitanya B Bharadwaj int arr[2] = {1,2};
15453e02caSRitanya B Bharadwaj int (*arrptr)[2] = &arr;
16453e02caSRitanya B Bharadwaj 
17453e02caSRitanya B Bharadwaj class declare{
18453e02caSRitanya B Bharadwaj   public: int x;
19453e02caSRitanya B Bharadwaj           void print();
20453e02caSRitanya B Bharadwaj };
21453e02caSRitanya B Bharadwaj declare obj1;
22453e02caSRitanya B Bharadwaj declare *obj2 = &obj1;
23453e02caSRitanya B Bharadwaj 
24453e02caSRitanya B Bharadwaj struct target{
25453e02caSRitanya B Bharadwaj   int x;
26453e02caSRitanya B Bharadwaj   void print();
27453e02caSRitanya B Bharadwaj };
28453e02caSRitanya B Bharadwaj static target S;
29453e02caSRitanya B Bharadwaj 
30*58eba709SRitanya B Bharadwaj static int var3 = 100;
31*58eba709SRitanya B Bharadwaj static int *ptr_3 = &var3;
32*58eba709SRitanya B Bharadwaj static char c = 'a';
33*58eba709SRitanya B Bharadwaj 
34453e02caSRitanya B Bharadwaj #pragma omp declare target
35453e02caSRitanya B Bharadwaj int target_var = variable;
36453e02caSRitanya B Bharadwaj float target_var1 = variable2;
37453e02caSRitanya B Bharadwaj int *ptr = &var;
38453e02caSRitanya B Bharadwaj int ***ptr2 = &ptr1;
39453e02caSRitanya B Bharadwaj int (**ptr3)[2] = &arrptr;
40453e02caSRitanya B Bharadwaj declare **obj3 = &obj2;
41453e02caSRitanya B Bharadwaj target *S1 = &S;
42453e02caSRitanya B Bharadwaj #pragma omp end declare target
43*58eba709SRitanya B Bharadwaj #pragma omp declare target(ptr_3)
44*58eba709SRitanya B Bharadwaj #pragma omp declare target to(c)
45*58eba709SRitanya B Bharadwaj 
46453e02caSRitanya B Bharadwaj // CHECK: #pragma omp declare target
47453e02caSRitanya B Bharadwaj // CHECK-NEXT: static int variable = 100;
48453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
49453e02caSRitanya B Bharadwaj 
50453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
51453e02caSRitanya B Bharadwaj // CHECK-NEXT: static float variable1 = 200;
52453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
53453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
54453e02caSRitanya B Bharadwaj // CHECK-NEXT: static float variable2 = variable1;
55453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
56453e02caSRitanya B Bharadwaj 
57453e02caSRitanya B Bharadwaj // CHECK: #pragma omp declare target
58453e02caSRitanya B Bharadwaj // CHECK-NEXT: static int var = 1;
59453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
60453e02caSRitanya B Bharadwaj 
61453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
62453e02caSRitanya B Bharadwaj // CHECK-NEXT: static int var1 = 10;
63453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
64453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
65453e02caSRitanya B Bharadwaj // CHECK-NEXT: static int *var2 = &var1;
66453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
67453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
68453e02caSRitanya B Bharadwaj // CHECK-NEXT: static int **ptr1 = &var2;
69453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
70453e02caSRitanya B Bharadwaj 
71453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
72453e02caSRitanya B Bharadwaj // CHECK-NEXT: int arr[2] = {1, 2};
73453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
74453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
75453e02caSRitanya B Bharadwaj // CHECK-NEXT: int (*arrptr)[2] = &arr;
76453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
77453e02caSRitanya B Bharadwaj 
78453e02caSRitanya B Bharadwaj // CHECK-NEXT: class declare {
79453e02caSRitanya B Bharadwaj // CHECK-NEXT: public:
80453e02caSRitanya B Bharadwaj // CHECK-NEXT:  int x;
81453e02caSRitanya B Bharadwaj // CHECK-NEXT:  void print();
82453e02caSRitanya B Bharadwaj // CHECK-NEXT: };
83453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
84453e02caSRitanya B Bharadwaj // CHECK-NEXT: declare obj1;
85453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
86453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
87453e02caSRitanya B Bharadwaj // CHECK-NEXT: declare *obj2 = &obj1;
88453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
89453e02caSRitanya B Bharadwaj 
90453e02caSRitanya B Bharadwaj // CHECK-NEXT: struct target {
91453e02caSRitanya B Bharadwaj // CHECK-NEXT:  int x;
92453e02caSRitanya B Bharadwaj // CHECK-NEXT:  void print();
93453e02caSRitanya B Bharadwaj // CHECK-NEXT: };
94453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
95453e02caSRitanya B Bharadwaj // CHECK-NEXT: static target S;
96453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
97*58eba709SRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
98*58eba709SRitanya B Bharadwaj // CHECK-NEXT: static int var3 = 100;
99*58eba709SRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
100*58eba709SRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
101*58eba709SRitanya B Bharadwaj // CHECK-NEXT: static int *ptr_3 = &var3;
102*58eba709SRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
103*58eba709SRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
104*58eba709SRitanya B Bharadwaj // CHECK-NEXT: static char c = 'a';
105*58eba709SRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
106453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
107453e02caSRitanya B Bharadwaj // CHECK-NEXT: int target_var = variable;
108453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
109453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
110453e02caSRitanya B Bharadwaj // CHECK-NEXT: float target_var1 = variable2;
111453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
112453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
113453e02caSRitanya B Bharadwaj // CHECK-NEXT: int *ptr = &var;
114453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
115453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
116453e02caSRitanya B Bharadwaj // CHECK-NEXT: int ***ptr2 = &ptr1;
117453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
118453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
119453e02caSRitanya B Bharadwaj // CHECK-NEXT: int (**ptr3)[2] = &arrptr;
120453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
121453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
122453e02caSRitanya B Bharadwaj // CHECK-NEXT: declare **obj3 = &obj2;
123453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
124453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp declare target
125453e02caSRitanya B Bharadwaj // CHECK-NEXT: target *S1 = &S;
126453e02caSRitanya B Bharadwaj // CHECK-NEXT: #pragma omp end declare target
127453e02caSRitanya B Bharadwaj 
128