Skip to content

Commit 499bc8a

Browse files
committed
Merge remote-tracking branch 'origin/main' into vplan-compute-iv-end-values
2 parents b48b097 + d1dff1d commit 499bc8a

File tree

97 files changed

+2750
-2733
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

97 files changed

+2750
-2733
lines changed

clang/lib/Sema/SemaOpenACC.cpp

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -587,14 +587,6 @@ class SemaOpenACCClauseVisitor {
587587

588588
OpenACCClause *SemaOpenACCClauseVisitor::VisitDefaultClause(
589589
SemaOpenACC::OpenACCParsedClause &Clause) {
590-
// Restrictions only properly implemented on 'compute'/'combined' constructs,
591-
// and 'compute'/'combined' constructs are the only construct that can do
592-
// anything with this yet, so skip/treat as unimplemented in this case.
593-
// Only 'data' is left.
594-
if (!isOpenACCComputeDirectiveKind(Clause.getDirectiveKind()) &&
595-
!isOpenACCCombinedDirectiveKind(Clause.getDirectiveKind()))
596-
return isNotImplemented();
597-
598590
// Don't add an invalid clause to the AST.
599591
if (Clause.getDefaultClauseKind() == OpenACCDefaultClauseKind::Invalid)
600592
return nullptr;
@@ -1070,11 +1062,13 @@ OpenACCClause *SemaOpenACCClauseVisitor::VisitDevicePtrClause(
10701062

10711063
OpenACCClause *SemaOpenACCClauseVisitor::VisitWaitClause(
10721064
SemaOpenACC::OpenACCParsedClause &Clause) {
1073-
// Restrictions only properly implemented on 'compute'/'combined' constructs,
1074-
// and 'compute'/'combined' constructs are the only construct that can do
1075-
// anything with this yet, so skip/treat as unimplemented in this case.
1065+
// Restrictions only properly implemented on 'compute'/'combined'/'data'
1066+
// constructs, and 'compute'/'combined'/'data' constructs are the only
1067+
// construct that can do anything with this yet, so skip/treat as
1068+
// unimplemented in this case.
10761069
if (!isOpenACCComputeDirectiveKind(Clause.getDirectiveKind()) &&
1077-
!isOpenACCCombinedDirectiveKind(Clause.getDirectiveKind()))
1070+
!isOpenACCCombinedDirectiveKind(Clause.getDirectiveKind()) &&
1071+
!isOpenACCDataDirectiveKind(Clause.getDirectiveKind()))
10781072
return isNotImplemented();
10791073

10801074
return OpenACCWaitClause::Create(

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

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ void foo() {
66
// them, so the 'check' lines should start to include those once we implement
77
// them. For now, they don't emit those because they are 'not implemented'.
88

9-
// CHECK: #pragma acc data
10-
// CHECK-NOT: default(none)
9+
// CHECK: #pragma acc data default(none)
1110
#pragma acc data default(none)
1211
;
1312

@@ -29,9 +28,10 @@ void foo() {
2928
;
3029

3130
int i;
31+
int *iPtr;
3232
int array[5];
3333

34-
// CHECK: #pragma acc data if(i == array[1])
34+
// CHECK: #pragma acc data default(none) if(i == array[1])
3535
#pragma acc data default(none) if(i == array[1])
3636
;
3737
// CHECK: #pragma acc enter data if(i == array[1])
@@ -44,11 +44,39 @@ void foo() {
4444
#pragma acc host_data use_device(Var) if(i == array[1])
4545
;
4646

47-
// CHECK: #pragma acc data async(i)
47+
// CHECK: #pragma acc data default(none) async(i)
4848
#pragma acc data default(none) async(i)
4949
;
5050
// CHECK: #pragma acc enter data async(i)
5151
#pragma acc enter data copyin(i) async(i)
5252
// CHECK: #pragma acc exit data async
5353
#pragma acc exit data copyout(i) async
54+
55+
// CHECK: #pragma acc data default(none) wait
56+
#pragma acc data default(none) wait()
57+
;
58+
59+
// CHECK: #pragma acc enter data wait()
60+
#pragma acc enter data copyin(Var) wait()
61+
62+
// CHECK: #pragma acc exit data wait(*iPtr, i)
63+
#pragma acc exit data copyout(Var) wait(*iPtr, i)
64+
65+
// CHECK: #pragma acc data default(none) wait(queues: *iPtr, i)
66+
#pragma acc data default(none) wait(queues:*iPtr, i)
67+
;
68+
69+
// CHECK: #pragma acc enter data wait(devnum: i : *iPtr, i)
70+
#pragma acc enter data copyin(Var) wait(devnum:i:*iPtr, i)
71+
72+
// CHECK: #pragma acc exit data wait(devnum: i : queues: *iPtr, i)
73+
#pragma acc exit data copyout(Var) wait(devnum:i:queues:*iPtr, i)
74+
75+
// CHECK: #pragma acc data default(none)
76+
#pragma acc data default(none)
77+
;
78+
79+
// CHECK: #pragma acc data default(present)
80+
#pragma acc data default(present)
81+
;
5482
}

clang/test/ParserOpenACC/parse-clauses.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ void func() {
1919
// expected-error@+1{{invalid OpenACC clause 'invalid'}}
2020
#pragma acc enter data finalize invalid invalid finalize
2121

22-
// expected-warning@+2{{OpenACC clause 'wait' not yet implemented, clause ignored}}
2322
// expected-warning@+1{{OpenACC clause 'finalize' not yet implemented, clause ignored}}
2423
#pragma acc enter data wait finalize
2524

clang/test/SemaOpenACC/combined-construct-default-ast.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
// RUN: %clang_cc1 %s -fopenacc -ast-dump | FileCheck %s
32

43
// Test this with PCH.

clang/test/SemaOpenACC/combined-construct-default-clause.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ void SingleOnly() {
2828
#pragma acc kernels loop default(none)
2929
for(int i = 0; i < 5; ++i);
3030

31-
// expected-warning@+1{{OpenACC clause 'default' not yet implemented}}
3231
#pragma acc data default(none)
3332
while(0);
3433

clang/test/SemaOpenACC/compute-construct-default-clause.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ void SingleOnly() {
2828
#pragma acc kernels default(none)
2929
for(int i = 0; i < 5; ++i);
3030

31-
// expected-warning@+1{{OpenACC clause 'default' not yet implemented}}
3231
#pragma acc data default(none)
3332
while(0);
3433

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ void NormalFunc() {
2222
#pragma acc data default(none)
2323
while (Var);
2424
// CHECK-NEXT: OpenACCDataConstruct{{.*}}data
25+
// CHECK-NEXT: default(none)
2526
// CHECK-NEXT: WhileStmt
2627
// CHECK: NullStmt
2728
#pragma acc enter data copyin(Var)
@@ -49,6 +50,7 @@ void TemplFunc() {
4950
#pragma acc data default(none)
5051
while (Var);
5152
// CHECK-NEXT: OpenACCDataConstruct{{.*}}data
53+
// CHECK-NEXT: default(none)
5254
// CHECK-NEXT: WhileStmt
5355
// CHECK: NullStmt
5456
#pragma acc enter data copyin(Var)
@@ -71,6 +73,7 @@ void TemplFunc() {
7173
// CHECK-NEXT: VarDecl
7274

7375
// CHECK-NEXT: OpenACCDataConstruct{{.*}}data
76+
// CHECK-NEXT: default(none)
7477
// CHECK-NEXT: WhileStmt
7578
// CHECK: NullStmt
7679

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
// RUN: %clang_cc1 %s -fopenacc -ast-dump | FileCheck %s
2+
3+
// Test this with PCH.
4+
// RUN: %clang_cc1 %s -fopenacc -emit-pch -o %t %s
5+
// RUN: %clang_cc1 %s -fopenacc -include-pch %t -ast-dump-all | FileCheck %s
6+
7+
#ifndef PCH_HELPER
8+
#define PCH_HELPER
9+
void NormalFunc() {
10+
// CHECK-LABEL: NormalFunc
11+
// CHECK-NEXT: CompoundStmt
12+
// CHECK-NEXT: OpenACCDataConstruct {{.*}}data
13+
// CHECK-NEXT: default(none)
14+
#pragma acc data default(none)
15+
// CHECK: OpenACCDataConstruct {{.*}}data
16+
// CHECK-NEXT: default(present)
17+
#pragma acc data default(present)
18+
;
19+
}
20+
template<typename T>
21+
void TemplFunc() {
22+
#pragma acc data default(none)
23+
for (unsigned i = 0; i < 5; ++i) {
24+
typename T::type I;
25+
}
26+
27+
#pragma acc data default(present)
28+
for (unsigned i = 0; i < 5; ++i) {
29+
typename T::type I;
30+
}
31+
32+
// CHECK-LABEL: FunctionTemplateDecl {{.*}}TemplFunc
33+
// CHECK-NEXT: TemplateTypeParmDecl
34+
35+
// Template Pattern:
36+
// CHECK-NEXT: FunctionDecl
37+
// CHECK-NEXT: CompoundStmt
38+
// CHECK-NEXT: OpenACCDataConstruct {{.*}}data
39+
// CHECK-NEXT: default(none)
40+
// CHECK: VarDecl{{.*}} I 'typename T::type'
41+
42+
// CHECK-NEXT: OpenACCDataConstruct {{.*}}data
43+
// CHECK-NEXT: default(present)
44+
// CHECK: VarDecl{{.*}} I 'typename T::type'
45+
46+
// Check instantiation.
47+
// CHECK-LABEL: FunctionDecl{{.*}} used TemplFunc 'void ()' implicit_instantiation
48+
// CHECK-NEXT: TemplateArgument type 'S'
49+
// CHECK-NEXT: RecordType
50+
// CHECK-NEXT: CXXRecord
51+
// CHECK-NEXT: CompoundStmt
52+
// CHECK-NEXT: OpenACCDataConstruct {{.*}}data
53+
// CHECK-NEXT: default(none)
54+
// CHECK: VarDecl{{.*}} I 'typename S::type':'int'
55+
// CHECK-NEXT: OpenACCDataConstruct {{.*}}data
56+
// CHECK-NEXT: default(present)
57+
// CHECK: VarDecl{{.*}} I 'typename S::type':'int'
58+
59+
}
60+
struct S {
61+
using type = int;
62+
};
63+
64+
void use() {
65+
TemplFunc<S>();
66+
}
67+
68+
#endif
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// RUN: %clang_cc1 %s -fopenacc -verify
2+
3+
void use() {
4+
// expected-error@+1{{invalid value for 'default' clause; expected 'present' or 'none'}}
5+
#pragma acc data default(garbage)
6+
;
7+
#pragma acc data default(present)
8+
;
9+
#pragma acc data default(none)
10+
;
11+
// expected-error@+2{{OpenACC 'default' clause cannot appear more than once on a 'data' directive}}
12+
// expected-note@+1{{previous clause is here}}
13+
#pragma acc data default(none) default(present)
14+
;
15+
// expected-error@+1{{OpenACC 'default' clause is not valid on 'enter data' directive}}
16+
#pragma acc enter data default(present)
17+
;
18+
// expected-error@+1{{OpenACC 'default' clause is not valid on 'exit data' directive}}
19+
#pragma acc exit data default(none)
20+
;
21+
// expected-error@+1{{OpenACC 'default' clause is not valid on 'host_data' directive}}
22+
#pragma acc host_data default(present)
23+
;
24+
}

clang/test/SemaOpenACC/data-construct-device_type-clause.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ void uses() {
44
int Var;
55
#pragma acc data device_type(foo) async
66
;
7-
// expected-warning@+1{{OpenACC clause 'wait' not yet implemented}}
87
#pragma acc data device_type(foo) wait
98
;
109
#pragma acc data device_type(foo) dtype(false)

0 commit comments

Comments
 (0)