Skip to content

Commit 553fa20

Browse files
committed
[OpenACC] Implement 'at least one of' restriction for 'update'
This completes the implementation of 'update' by implementing its last restriction. This restriction requires at least 1 of the 'self', 'host', or 'device' clauses.
1 parent be32621 commit 553fa20

File tree

6 files changed

+129
-87
lines changed

6 files changed

+129
-87
lines changed

clang/lib/Sema/SemaOpenACC.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3732,8 +3732,17 @@ bool SemaOpenACC::ActOnStartStmtDirective(
37323732
OpenACCClauseKind::DeviceType,
37333733
OpenACCClauseKind::If});
37343734

3735-
// TODO: OpenACC: 'Update' construct needs to have one of 'self', 'host', or
3736-
// 'device'. Implement here.
3735+
// OpenACC3.3 2.14.4: At least one self, host, or device clause must appear on
3736+
// an update directive.
3737+
if (K == OpenACCDirectiveKind::Update &&
3738+
llvm::find_if(Clauses, llvm::IsaPred<OpenACCSelfClause, OpenACCHostClause,
3739+
OpenACCDeviceClause>) ==
3740+
Clauses.end())
3741+
return Diag(StartLoc, diag::err_acc_construct_one_clause_of)
3742+
<< K
3743+
<< GetListOfClauses({OpenACCClauseKind::Self,
3744+
OpenACCClauseKind::Host,
3745+
OpenACCClauseKind::Device});
37373746

37383747
return diagnoseConstructAppertainment(*this, K, StartLoc, /*IsStmt=*/true);
37393748
}

clang/test/AST/ast-print-openacc-update-construct.cpp

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,38 @@ void uses(bool cond) {
33
int I;
44
int *iPtr;
55
int array[5];
6-
// CHECK: #pragma acc update
7-
#pragma acc update
6+
// CHECK: #pragma acc update self(I)
7+
#pragma acc update self(I)
88

9-
// CHECK: #pragma acc update if_present
10-
#pragma acc update if_present
11-
// CHECK: #pragma acc update if(cond)
12-
#pragma acc update if(cond)
9+
// CHECK: #pragma acc update self(I) if_present
10+
#pragma acc update self(I) if_present
11+
// CHECK: #pragma acc update self(I) if(cond)
12+
#pragma acc update self(I) if(cond)
1313

14-
// CHECK: #pragma acc update async
15-
#pragma acc update async
16-
// CHECK: #pragma acc update async(*iPtr)
17-
#pragma acc update async(*iPtr)
18-
// CHECK: #pragma acc update async(I)
19-
#pragma acc update async(I)
14+
// CHECK: #pragma acc update self(I) async
15+
#pragma acc update self(I) async
16+
// CHECK: #pragma acc update self(I) async(*iPtr)
17+
#pragma acc update self(I) async(*iPtr)
18+
// CHECK: #pragma acc update self(I) async(I)
19+
#pragma acc update self(I) async(I)
2020

21-
// CHECK: #pragma acc update wait(*iPtr, I) async
22-
#pragma acc update wait(*iPtr, I) async
21+
// CHECK: #pragma acc update self(I) wait(*iPtr, I) async
22+
#pragma acc update self(I) wait(*iPtr, I) async
2323

24-
// CHECK: #pragma acc update wait(queues: *iPtr, I) async(*iPtr)
25-
#pragma acc update wait(queues:*iPtr, I) async(*iPtr)
24+
// CHECK: #pragma acc update self(I) wait(queues: *iPtr, I) async(*iPtr)
25+
#pragma acc update self(I) wait(queues:*iPtr, I) async(*iPtr)
2626

27-
// CHECK: #pragma acc update wait(devnum: I : *iPtr, I) async(I)
28-
#pragma acc update wait(devnum:I:*iPtr, I) async(I)
27+
// CHECK: #pragma acc update self(I) wait(devnum: I : *iPtr, I) async(I)
28+
#pragma acc update self(I) wait(devnum:I:*iPtr, I) async(I)
2929

30-
// CHECK: #pragma acc update wait(devnum: I : queues: *iPtr, I) if(I == array[I]) async(I)
31-
#pragma acc update wait(devnum:I:queues:*iPtr, I) if(I == array[I]) async(I)
30+
// CHECK: #pragma acc update self(I) wait(devnum: I : queues: *iPtr, I) if(I == array[I]) async(I)
31+
#pragma acc update self(I) wait(devnum:I:queues:*iPtr, I) if(I == array[I]) async(I)
3232

33-
// CHECK: #pragma acc update device_type(I) dtype(H)
34-
#pragma acc update device_type(I) dtype(H)
33+
// CHECK: #pragma acc update self(I) device_type(I) dtype(H)
34+
#pragma acc update self(I) device_type(I) dtype(H)
3535

36-
// CHECK: #pragma acc update device_type(J) dtype(K)
37-
#pragma acc update device_type(J) dtype(K)
36+
// CHECK: #pragma acc update self(I) device_type(J) dtype(K)
37+
#pragma acc update self(I) device_type(J) dtype(K)
3838

3939
// CHECK: #pragma acc update self(I, iPtr, array, array[1], array[1:2])
4040
#pragma acc update self(I, iPtr, array, array[1], array[1:2])

clang/test/ParserOpenACC/parse-clauses.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ void SelfUpdate() {
344344
struct Members s;
345345

346346
// expected-error@+1{{expected '('}}
347-
#pragma acc update self
347+
#pragma acc update host(s) self
348348
for(int i = 0; i < 5;++i) {}
349349

350350
// expected-error@+3{{use of undeclared identifier 'zero'}}

clang/test/ParserOpenACC/parse-constructs.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ void func() {
151151
// expected-error@+1{{OpenACC 'set' construct must have at least one 'default_async', 'device_num', 'device_type' or 'if' clause}}
152152
#pragma acc set clause list
153153
for(;;){}
154+
// expected-error@+2{{OpenACC 'update' construct must have at least one 'self', 'host' or 'device' clause}}
154155
// expected-error@+1{{invalid OpenACC clause 'clause'}}
155156
#pragma acc update clause list
156157
for(;;){}

clang/test/SemaOpenACC/update-construct-ast.cpp

Lines changed: 67 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@ void NormalFunc() {
1818
// CHECK-LABEL: NormalFunc
1919
// CHECK-NEXT: CompoundStmt
2020

21-
#pragma acc update if_present if (some_int() < some_long())
21+
#pragma acc update self(Global) if_present if (some_int() < some_long())
2222
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
23+
// CHECK-NEXT: self clause
24+
// CHECK-NEXT: DeclRefExpr{{.*}}'Global' 'int'
2325
// CHECK-NEXT: if_present clause
2426
// CHECK-NEXT: if clause
2527
// CHECK-NEXT: BinaryOperator{{.*}}'bool' '<'
@@ -31,15 +33,19 @@ void NormalFunc() {
3133
// CHECK-NEXT: ImplicitCastExpr
3234
// CHECK-NEXT: DeclRefExpr{{.*}}'some_long' 'long ()'
3335

34-
#pragma acc update wait async device_type(A) dtype(B)
36+
#pragma acc update self(Global) wait async device_type(A) dtype(B)
3537
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
38+
// CHECK-NEXT: self clause
39+
// CHECK-NEXT: DeclRefExpr{{.*}}'Global' 'int'
3640
// CHECK-NEXT: wait clause
3741
// CHECK-NEXT: <<<NULL>>>
3842
// CHECK-NEXT: async clause
3943
// CHECK-NEXT: device_type(A)
4044
// CHECK-NEXT: dtype(B)
41-
#pragma acc update wait(some_int(), some_long()) async(some_int())
45+
#pragma acc update self(Global) wait(some_int(), some_long()) async(some_int())
4246
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
47+
// CHECK-NEXT: self clause
48+
// CHECK-NEXT: DeclRefExpr{{.*}}'Global' 'int'
4349
// CHECK-NEXT: wait clause
4450
// CHECK-NEXT: <<<NULL>>>
4551
// CHECK-NEXT: CallExpr{{.*}}'int'
@@ -52,8 +58,10 @@ void NormalFunc() {
5258
// CHECK-NEXT: CallExpr{{.*}}'int'
5359
// CHECK-NEXT: ImplicitCastExpr
5460
// CHECK-NEXT: DeclRefExpr{{.*}}'some_int' 'int ()'
55-
#pragma acc update wait(queues:some_int(), some_long())
61+
#pragma acc update self(Global) wait(queues:some_int(), some_long())
5662
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
63+
// CHECK-NEXT: self clause
64+
// CHECK-NEXT: DeclRefExpr{{.*}}'Global' 'int'
5765
// CHECK-NEXT: wait clause
5866
// CHECK-NEXT: <<<NULL>>>
5967
// CHECK-NEXT: CallExpr{{.*}}'int'
@@ -62,8 +70,10 @@ void NormalFunc() {
6270
// CHECK-NEXT: CallExpr{{.*}}'long'
6371
// CHECK-NEXT: ImplicitCastExpr
6472
// CHECK-NEXT: DeclRefExpr{{.*}}'some_long' 'long ()'
65-
#pragma acc update wait(devnum: some_int() :some_int(), some_long())
73+
#pragma acc update self(Global) wait(devnum: some_int() :some_int(), some_long())
6674
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
75+
// CHECK-NEXT: self clause
76+
// CHECK-NEXT: DeclRefExpr{{.*}}'Global' 'int'
6777
// CHECK-NEXT: wait clause
6878
// CHECK-NEXT: CallExpr{{.*}}'int'
6979
// CHECK-NEXT: ImplicitCastExpr
@@ -83,12 +93,12 @@ void NormalFunc() {
8393
// CHECK-NEXT: ArraySubscriptExpr{{.*}} 'short' lvalue
8494
// CHECK-NEXT: ImplicitCastExpr
8595
// CHECK-NEXT: DeclRefExpr{{.*}}'GlobalArray' 'short[5]'
86-
// CHECK-NEXT: IntegerLiteral{{.*}} 0
96+
// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0
8797
// CHECK-NEXT: ArraySectionExpr
8898
// CHECK-NEXT: ImplicitCastExpr
8999
// CHECK-NEXT: DeclRefExpr{{.*}}'GlobalArray' 'short[5]'
90-
// CHECK-NEXT: IntegerLiteral{{.*}} 0
91-
// CHECK-NEXT: IntegerLiteral{{.*}} 1
100+
// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0
101+
// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 1
92102

93103
#pragma acc update host(Global, GlobalArray, GlobalArray[0], GlobalArray[0:1]) device(Global, GlobalArray, GlobalArray[0], GlobalArray[0:1])
94104
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
@@ -98,24 +108,24 @@ void NormalFunc() {
98108
// CHECK-NEXT: ArraySubscriptExpr{{.*}} 'short' lvalue
99109
// CHECK-NEXT: ImplicitCastExpr
100110
// CHECK-NEXT: DeclRefExpr{{.*}}'GlobalArray' 'short[5]'
101-
// CHECK-NEXT: IntegerLiteral{{.*}} 0
111+
// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0
102112
// CHECK-NEXT: ArraySectionExpr
103113
// CHECK-NEXT: ImplicitCastExpr
104114
// CHECK-NEXT: DeclRefExpr{{.*}}'GlobalArray' 'short[5]'
105-
// CHECK-NEXT: IntegerLiteral{{.*}} 0
106-
// CHECK-NEXT: IntegerLiteral{{.*}} 1
115+
// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0
116+
// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 1
107117
// CHECK-NEXT: device clause
108118
// CHECK-NEXT: DeclRefExpr{{.*}}'Global' 'int'
109119
// CHECK-NEXT: DeclRefExpr{{.*}}'GlobalArray' 'short[5]'
110120
// CHECK-NEXT: ArraySubscriptExpr{{.*}} 'short' lvalue
111121
// CHECK-NEXT: ImplicitCastExpr
112122
// CHECK-NEXT: DeclRefExpr{{.*}}'GlobalArray' 'short[5]'
113-
// CHECK-NEXT: IntegerLiteral{{.*}} 0
123+
// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0
114124
// CHECK-NEXT: ArraySectionExpr
115125
// CHECK-NEXT: ImplicitCastExpr
116126
// CHECK-NEXT: DeclRefExpr{{.*}}'GlobalArray' 'short[5]'
117-
// CHECK-NEXT: IntegerLiteral{{.*}} 0
118-
// CHECK-NEXT: IntegerLiteral{{.*}} 1
127+
// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0
128+
// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 1
119129
}
120130

121131
template<typename T>
@@ -126,24 +136,30 @@ void TemplFunc(T t) {
126136
// CHECK-NEXT: ParmVarDecl{{.*}} t 'T'
127137
// CHECK-NEXT: CompoundStmt
128138

129-
#pragma acc update if_present if (T::value < t)
139+
#pragma acc update self(t) if_present if (T::value < t)
130140
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
141+
// CHECK-NEXT: self clause
142+
// CHECK-NEXT: DeclRefExpr{{.*}} 't' 'T'
131143
// CHECK-NEXT: if_present clause
132144
// CHECK-NEXT: if clause
133145
// CHECK-NEXT: BinaryOperator{{.*}}'<dependent type>' '<'
134146
// CHECK-NEXT: DependentScopeDeclRefExpr{{.*}} '<dependent type>'
135147
// CHECK-NEXT: NestedNameSpecifier TypeSpec 'T'
136148
// CHECK-NEXT: DeclRefExpr{{.*}}'t' 'T'
137149

138-
#pragma acc update wait async device_type(T) dtype(U)
150+
#pragma acc update self(t) wait async device_type(T) dtype(U)
139151
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
152+
// CHECK-NEXT: self clause
153+
// CHECK-NEXT: DeclRefExpr{{.*}} 't' 'T'
140154
// CHECK-NEXT: wait clause
141155
// CHECK-NEXT: <<<NULL>>>
142156
// CHECK-NEXT: async clause
143157
// CHECK-NEXT: device_type(T)
144158
// CHECK-NEXT: dtype(U)
145-
#pragma acc update wait(T::value, t) async(T::value)
159+
#pragma acc update self(t) wait(T::value, t) async(T::value)
146160
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
161+
// CHECK-NEXT: self clause
162+
// CHECK-NEXT: DeclRefExpr{{.*}} 't' 'T'
147163
// CHECK-NEXT: wait clause
148164
// CHECK-NEXT: <<<NULL>>>
149165
// CHECK-NEXT: DependentScopeDeclRefExpr{{.*}}'<dependent type>'
@@ -152,17 +168,21 @@ void TemplFunc(T t) {
152168
// CHECK-NEXT: async clause
153169
// CHECK-NEXT: DependentScopeDeclRefExpr{{.*}}'<dependent type>'
154170
// CHECK-NEXT: NestedNameSpecifier TypeSpec 'T'
155-
#pragma acc update wait(queues:T::value, t) async(t)
171+
#pragma acc update self(t) wait(queues:T::value, t) async(t)
156172
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
173+
// CHECK-NEXT: self clause
174+
// CHECK-NEXT: DeclRefExpr{{.*}} 't' 'T'
157175
// CHECK-NEXT: wait clause
158176
// CHECK-NEXT: <<<NULL>>>
159177
// CHECK-NEXT: DependentScopeDeclRefExpr{{.*}}'<dependent type>'
160178
// CHECK-NEXT: NestedNameSpecifier TypeSpec 'T'
161179
// CHECK-NEXT: DeclRefExpr{{.*}} 't' 'T'
162180
// CHECK-NEXT: async clause
163181
// CHECK-NEXT: DeclRefExpr{{.*}} 't' 'T'
164-
#pragma acc update wait(devnum: T::value:t, T::value)
182+
#pragma acc update self(t) wait(devnum: T::value:t, T::value)
165183
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
184+
// CHECK-NEXT: self clause
185+
// CHECK-NEXT: DeclRefExpr{{.*}} 't' 'T'
166186
// CHECK-NEXT: wait clause
167187
// CHECK-NEXT: DependentScopeDeclRefExpr{{.*}}'<dependent type>'
168188
// CHECK-NEXT: NestedNameSpecifier TypeSpec 'T'
@@ -184,11 +204,11 @@ void TemplFunc(T t) {
184204
// CHECK-NEXT: DeclRefExpr{{.*}} 'LocalArray' 'decltype(T::value)[5]'
185205
// CHECK-NEXT: ArraySubscriptExpr
186206
// CHECK-NEXT: DeclRefExpr{{.*}} 'LocalArray' 'decltype(T::value)[5]'
187-
// CHECK-NEXT: IntegerLiteral{{.*}}0
207+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 0
188208
// CHECK-NEXT: ArraySectionExpr
189209
// CHECK-NEXT: DeclRefExpr{{.*}} 'LocalArray' 'decltype(T::value)[5]'
190-
// CHECK-NEXT: IntegerLiteral{{.*}}0
191-
// CHECK-NEXT: IntegerLiteral{{.*}}1
210+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 0
211+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 1
192212

193213
#pragma acc update host(Local, LocalArray, LocalArray[0], LocalArray[0:1]) device(Local, LocalArray, LocalArray[0], LocalArray[0:1])
194214
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
@@ -197,21 +217,21 @@ void TemplFunc(T t) {
197217
// CHECK-NEXT: DeclRefExpr{{.*}} 'LocalArray' 'decltype(T::value)[5]'
198218
// CHECK-NEXT: ArraySubscriptExpr
199219
// CHECK-NEXT: DeclRefExpr{{.*}} 'LocalArray' 'decltype(T::value)[5]'
200-
// CHECK-NEXT: IntegerLiteral{{.*}}0
220+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 0
201221
// CHECK-NEXT: ArraySectionExpr
202222
// CHECK-NEXT: DeclRefExpr{{.*}} 'LocalArray' 'decltype(T::value)[5]'
203-
// CHECK-NEXT: IntegerLiteral{{.*}}0
204-
// CHECK-NEXT: IntegerLiteral{{.*}}1
223+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 0
224+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 1
205225
// CHECK-NEXT: device clause
206226
// CHECK-NEXT: DeclRefExpr{{.*}} 'Local' 'decltype(T::value)'
207227
// CHECK-NEXT: DeclRefExpr{{.*}} 'LocalArray' 'decltype(T::value)[5]'
208228
// CHECK-NEXT: ArraySubscriptExpr
209229
// CHECK-NEXT: DeclRefExpr{{.*}} 'LocalArray' 'decltype(T::value)[5]'
210-
// CHECK-NEXT: IntegerLiteral{{.*}}0
230+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 0
211231
// CHECK-NEXT: ArraySectionExpr
212232
// CHECK-NEXT: DeclRefExpr{{.*}} 'LocalArray' 'decltype(T::value)[5]'
213-
// CHECK-NEXT: IntegerLiteral{{.*}}0
214-
// CHECK-NEXT: IntegerLiteral{{.*}}1
233+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 0
234+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 1
215235

216236
// Instantiation:
217237
// CHECK-NEXT: FunctionDecl{{.*}} TemplFunc 'void (SomeStruct)' implicit_instantiation
@@ -222,6 +242,8 @@ void TemplFunc(T t) {
222242
// CHECK-NEXT: CompoundStmt
223243

224244
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
245+
// CHECK-NEXT: self clause
246+
// CHECK-NEXT: DeclRefExpr{{.*}} 't' 'SomeStruct'
225247
// CHECK-NEXT: if_present clause
226248
// CHECK-NEXT: if clause
227249
// CHECK-NEXT: BinaryOperator{{.*}}'bool' '<'
@@ -234,13 +256,17 @@ void TemplFunc(T t) {
234256
// CHECK-NEXT: DeclRefExpr{{.*}}'t' 'SomeStruct'
235257

236258
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
259+
// CHECK-NEXT: self clause
260+
// CHECK-NEXT: DeclRefExpr{{.*}} 't' 'SomeStruct'
237261
// CHECK-NEXT: wait clause
238262
// CHECK-NEXT: <<<NULL>>>
239263
// CHECK-NEXT: async clause
240264
// CHECK-NEXT: device_type(T)
241265
// CHECK-NEXT: dtype(U)
242266

243267
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
268+
// CHECK-NEXT: self clause
269+
// CHECK-NEXT: DeclRefExpr{{.*}} 't' 'SomeStruct'
244270
// CHECK-NEXT: wait clause
245271
// CHECK-NEXT: <<<NULL>>>
246272
// CHECK-NEXT: ImplicitCastExpr{{.*}}'unsigned int'
@@ -256,6 +282,8 @@ void TemplFunc(T t) {
256282
// CHECK-NEXT: NestedNameSpecifier TypeSpec 'SomeStruct'
257283

258284
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
285+
// CHECK-NEXT: self clause
286+
// CHECK-NEXT: DeclRefExpr{{.*}} 't' 'SomeStruct'
259287
// CHECK-NEXT: wait clause
260288
// CHECK-NEXT: <<<NULL>>>
261289
// CHECK-NEXT: ImplicitCastExpr{{.*}}'unsigned int'
@@ -272,6 +300,8 @@ void TemplFunc(T t) {
272300
// CHECK-NEXT: DeclRefExpr{{.*}}'t' 'SomeStruct'
273301

274302
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
303+
// CHECK-NEXT: self clause
304+
// CHECK-NEXT: DeclRefExpr{{.*}} 't' 'SomeStruct'
275305
// CHECK-NEXT: wait clause
276306
// CHECK-NEXT: ImplicitCastExpr{{.*}}'unsigned int'
277307
// CHECK-NEXT: DeclRefExpr{{.*}}'value' 'const unsigned int'
@@ -299,12 +329,12 @@ void TemplFunc(T t) {
299329
// CHECK-NEXT: ArraySubscriptExpr
300330
// CHECK-NEXT: ImplicitCastExpr
301331
// CHECK-NEXT: DeclRefExpr{{.*}} 'LocalArray' 'decltype(SomeStruct::value)[5]'
302-
// CHECK-NEXT: IntegerLiteral{{.*}}0
332+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 0
303333
// CHECK-NEXT: ArraySectionExpr
304334
// CHECK-NEXT: ImplicitCastExpr
305335
// CHECK-NEXT: DeclRefExpr{{.*}} 'LocalArray' 'decltype(SomeStruct::value)[5]'
306-
// CHECK-NEXT: IntegerLiteral{{.*}}0
307-
// CHECK-NEXT: IntegerLiteral{{.*}}1
336+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 0
337+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 1
308338

309339
// CHECK-NEXT: OpenACCUpdateConstruct{{.*}}update
310340
// CHECK-NEXT: host clause
@@ -313,24 +343,24 @@ void TemplFunc(T t) {
313343
// CHECK-NEXT: ArraySubscriptExpr
314344
// CHECK-NEXT: ImplicitCastExpr
315345
// CHECK-NEXT: DeclRefExpr{{.*}} 'LocalArray' 'decltype(SomeStruct::value)[5]'
316-
// CHECK-NEXT: IntegerLiteral{{.*}}0
346+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 0
317347
// CHECK-NEXT: ArraySectionExpr
318348
// CHECK-NEXT: ImplicitCastExpr
319349
// CHECK-NEXT: DeclRefExpr{{.*}} 'LocalArray' 'decltype(SomeStruct::value)[5]'
320-
// CHECK-NEXT: IntegerLiteral{{.*}}0
321-
// CHECK-NEXT: IntegerLiteral{{.*}}1
350+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 0
351+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 1
322352
// CHECK-NEXT: device clause
323353
// CHECK-NEXT: DeclRefExpr{{.*}} 'Local' 'decltype(SomeStruct::value)':'const unsigned int'
324354
// CHECK-NEXT: DeclRefExpr{{.*}} 'LocalArray' 'decltype(SomeStruct::value)[5]'
325355
// CHECK-NEXT: ArraySubscriptExpr
326356
// CHECK-NEXT: ImplicitCastExpr
327357
// CHECK-NEXT: DeclRefExpr{{.*}} 'LocalArray' 'decltype(SomeStruct::value)[5]'
328-
// CHECK-NEXT: IntegerLiteral{{.*}}0
358+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 0
329359
// CHECK-NEXT: ArraySectionExpr
330360
// CHECK-NEXT: ImplicitCastExpr
331361
// CHECK-NEXT: DeclRefExpr{{.*}} 'LocalArray' 'decltype(SomeStruct::value)[5]'
332-
// CHECK-NEXT: IntegerLiteral{{.*}}0
333-
// CHECK-NEXT: IntegerLiteral{{.*}}1
362+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 0
363+
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 1
334364
}
335365

336366
struct SomeStruct{

0 commit comments

Comments
 (0)