Skip to content

Commit 44d02b3

Browse files
committed
Add template tests
1 parent fc35a61 commit 44d02b3

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

clang/test/SemaOpenACC/private_firstprivate_reduction_required_ops.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,32 @@ void private_uses(ImplicitCtorDtor &CDT, ImplDeletedCtor &IDC,
7272
;
7373

7474
}
75+
76+
template<typename T>
77+
void private_templ(T& t) {
78+
#pragma acc parallel private(t) // #PRIV
79+
;
80+
}
81+
82+
void inst(ImplicitCtorDtor &CDT, ImplDeletedCtor &IDC,
83+
DefaultedCtor &DefC, ImpledCtor &IC, DeletedCtor &DelC,
84+
ImpledDtor &ID, DefaultedDtor &DefD, DeletedDtor &DelD,
85+
ImplicitDelDtor &IDD) {
86+
private_templ(CDT);
87+
// expected-error@#PRIV{{variable of type 'ImplDeletedCtor' referenced in OpenACC 'private' clause does not have a default constructor; reference has no effect}}
88+
// expected-note@+1{{in instantiation}}
89+
private_templ(IDC);
90+
private_templ(DefC);
91+
private_templ(IC);
92+
// expected-error@#PRIV{{variable of type 'DeletedCtor' referenced in OpenACC 'private' clause does not have a default constructor; reference has no effect}}
93+
// expected-note@+1{{in instantiation}}
94+
private_templ(DelC);
95+
private_templ(ID);
96+
private_templ(DefD);
97+
// expected-error@#PRIV{{variable of type 'DeletedDtor' referenced in OpenACC 'private' clause does not have a destructor; reference has no effect}}
98+
// expected-note@+1{{in instantiation}}
99+
private_templ(DelD);
100+
// expected-error@#PRIV{{variable of type 'ImplicitDelDtor' referenced in OpenACC 'private' clause does not have a destructor; reference has no effect}}
101+
// expected-note@+1{{in instantiation}}
102+
private_templ(IDD);
103+
}

0 commit comments

Comments
 (0)