Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/c-c++-common/goacc/declare-2.c @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 84e7813d76e9 |
children |
comparison
equal
deleted
inserted
replaced
131:84e7813d76e9 | 145:1830386684a0 |
---|---|
1 /* Test invalid uses of declare directive. */ | 1 /* Test invalid use of the OpenACC 'declare' directive. */ |
2 /* { dg-do compile } */ | 2 |
3 | 3 |
4 #pragma acc declare /* { dg-error "no valid clauses" } */ | 4 #pragma acc declare /* { dg-error "no valid clauses" } */ |
5 | 5 |
6 #pragma acc declare create(undeclared) /* { dg-error "undeclared" } */ | 6 #pragma acc declare create(undeclared) /* { dg-error "undeclared" } */ |
7 /* { dg-error "no valid clauses" "second error" { target *-*-* } .-1 } */ | 7 /* { dg-error "no valid clauses" "second error" { target *-*-* } .-1 } */ |
40 #pragma acc declare link (va11) /* { dg-error "more than once" } */ | 40 #pragma acc declare link (va11) /* { dg-error "more than once" } */ |
41 | 41 |
42 int va12; | 42 int va12; |
43 #pragma acc declare create (va12) link (va12) /* { dg-error "more than once" } */ | 43 #pragma acc declare create (va12) link (va12) /* { dg-error "more than once" } */ |
44 | 44 |
45 | |
45 void | 46 void |
46 f (void) | 47 f (void) |
47 { | 48 { |
48 int va0; | 49 int va0; |
49 #pragma acc declare link(va0) /* { dg-error "global variable" } */ | 50 #pragma acc declare link(va0) /* { dg-error "global variable" } */ |
63 extern int ve4; | 64 extern int ve4; |
64 #pragma acc declare present_or_copyout(ve4) /* { dg-error "invalid use of" } */ | 65 #pragma acc declare present_or_copyout(ve4) /* { dg-error "invalid use of" } */ |
65 | 66 |
66 #pragma acc declare present (v2) /* { dg-error "invalid use of" } */ | 67 #pragma acc declare present (v2) /* { dg-error "invalid use of" } */ |
67 } | 68 } |
69 | |
70 | |
71 /* The same as 'f' but everything contained in an OpenACC 'data' construct. */ | |
72 | |
73 void | |
74 f_data (void) | |
75 { | |
76 #pragma acc data | |
77 { | |
78 int va0; | |
79 # pragma acc declare link(va0) /* { dg-error "global variable" } */ | |
80 | |
81 extern int ve0; | |
82 # pragma acc declare copy(ve0) /* { dg-error "invalid use of" } */ | |
83 | |
84 extern int ve1; | |
85 # pragma acc declare copyout(ve1) /* { dg-error "invalid use of" } */ | |
86 | |
87 extern int ve2; | |
88 # pragma acc declare present(ve2) /* { dg-error "invalid use of" } */ | |
89 | |
90 extern int ve3; | |
91 # pragma acc declare present_or_copy(ve3) /* { dg-error "invalid use of" } */ | |
92 | |
93 extern int ve4; | |
94 # pragma acc declare present_or_copyout(ve4) /* { dg-error "invalid use of" } */ | |
95 | |
96 # pragma acc declare present (v2) /* { dg-error "invalid use of" } */ | |
97 } | |
98 } | |
99 | |
100 | |
101 /* Testing for PR90868 "Duplicate OpenACC 'declare' directives for 'extern' | |
102 variables". */ | |
103 | |
104 | |
105 void | |
106 f_pr90868 (void) | |
107 { | |
108 extern int we0; | |
109 #pragma acc declare create(we0) | |
110 | |
111 extern int we1; | |
112 #pragma acc declare copyin(we1) | |
113 | |
114 extern int *we2; | |
115 #pragma acc declare deviceptr(we2) | |
116 | |
117 extern int we3; | |
118 #pragma acc declare device_resident(we3) | |
119 | |
120 extern int we4; | |
121 #pragma acc declare link(we4) | |
122 | |
123 extern int we5; | |
124 #pragma acc declare present_or_copyin(we5) | |
125 | |
126 extern int we6; | |
127 #pragma acc declare present_or_create(we6) | |
128 } | |
129 | |
130 | |
131 /* The same as 'f_pr90868'. */ | |
132 | |
133 /* The errors are emitted for C only; for C++, the duplicate OpenACC 'declare' | |
134 directives for 'extern' variables are accepted. */ | |
135 | |
136 void | |
137 f_pr90868_2 (void) | |
138 { | |
139 extern int we0; | |
140 #pragma acc declare create(we0) /* { dg-error "variable 'we0' used more than once with '#pragma acc declare'" "" { target c } } */ | |
141 | |
142 extern int we1; | |
143 #pragma acc declare copyin(we1) /* { dg-error "variable 'we1' used more than once with '#pragma acc declare'" "" { target c } } */ | |
144 | |
145 extern int *we2; | |
146 #pragma acc declare deviceptr(we2) /* { dg-error "variable 'we2' used more than once with '#pragma acc declare'" "" { target c } } */ | |
147 | |
148 extern int we3; | |
149 #pragma acc declare device_resident(we3) /* { dg-error "variable 'we3' used more than once with '#pragma acc declare'" "" { target c } } */ | |
150 | |
151 extern int we4; | |
152 #pragma acc declare link(we4) /* { dg-error "variable 'we4' used more than once with '#pragma acc declare'" "" { target c } } */ | |
153 | |
154 extern int we5; | |
155 #pragma acc declare present_or_copyin(we5) /* { dg-error "variable 'we5' used more than once with '#pragma acc declare'" "" { target c } } */ | |
156 | |
157 extern int we6; | |
158 #pragma acc declare present_or_create(we6) /* { dg-error "variable 'we6' used more than once with '#pragma acc declare'" "" { target c } } */ | |
159 } | |
160 | |
161 | |
162 /* The same as 'f_pr90868' but everything contained in an OpenACC 'data' | |
163 construct. */ | |
164 | |
165 #ifdef __cplusplus | |
166 /* TODO PR90868 | |
167 | |
168 C++: ICE during gimplification. */ | |
169 #else | |
170 void | |
171 f_pr90868_data (void) | |
172 { | |
173 #pragma acc data | |
174 { | |
175 extern int we0; | |
176 # pragma acc declare create(we0) /* { dg-error "variable 'we0' used more than once with '#pragma acc declare'" "" { target c } } */ | |
177 | |
178 extern int we1; | |
179 # pragma acc declare copyin(we1) /* { dg-error "variable 'we1' used more than once with '#pragma acc declare'" "" { target c } } */ | |
180 | |
181 extern int *we2; | |
182 # pragma acc declare deviceptr(we2) /* { dg-error "variable 'we2' used more than once with '#pragma acc declare'" "" { target c } } */ | |
183 | |
184 extern int we3; | |
185 # pragma acc declare device_resident(we3) /* { dg-error "variable 'we3' used more than once with '#pragma acc declare'" "" { target c } } */ | |
186 | |
187 extern int we4; | |
188 # pragma acc declare link(we4) /* { dg-error "variable 'we4' used more than once with '#pragma acc declare'" "" { target c } } */ | |
189 | |
190 extern int we5; | |
191 # pragma acc declare present_or_copyin(we5) /* { dg-error "variable 'we5' used more than once with '#pragma acc declare'" "" { target c } } */ | |
192 | |
193 extern int we6; | |
194 # pragma acc declare present_or_create(we6) /* { dg-error "variable 'we6' used more than once with '#pragma acc declare'" "" { target c } } */ | |
195 } | |
196 } | |
197 #endif |