@@ -19,6 +19,18 @@ int function();
1919// CHECK-NEXT: nohost clause
2020// CHECK-NEXT: vector clause
2121
22+ #pragma acc routine(function) device_type(Something) seq
23+ // CHECK-NEXT: OpenACCRoutineDecl{{.*}} routine name_specified
24+ // CHECK-NEXT: DeclRefExpr{{.*}} 'function' 'int ()'
25+ // CHECK-NEXT: device_type(Something)
26+ // CHECK-NEXT: seq clause
27+ #pragma acc routine(function) nohost dtype(Something) vector
28+ // CHECK-NEXT: OpenACCRoutineDecl{{.*}} routine name_specified
29+ // CHECK-NEXT: DeclRefExpr{{.*}} 'function' 'int ()'
30+ // CHECK-NEXT: nohost clause
31+ // CHECK-NEXT: dtype(Something)
32+ // CHECK-NEXT: vector clause
33+
2234namespace NS {
2335 // CHECK-NEXT: NamespaceDecl
2436 int NSFunc ();
@@ -77,6 +89,16 @@ struct S {
7789// CHECK-NEXT: OpenACCRoutineDecl{{.*}} routine name_specified
7890// CHECK-NEXT: DeclRefExpr{{.*}} 'Lambda' 'const S::(lambda at
7991// CHECK-NEXT: worker clause
92+ #pragma acc routine(Lambda) worker device_type(Lambda)
93+ // CHECK-NEXT: OpenACCRoutineDecl{{.*}} routine name_specified
94+ // CHECK-NEXT: DeclRefExpr{{.*}} 'Lambda' 'const S::(lambda at
95+ // CHECK-NEXT: worker clause
96+ // CHECK-NEXT: device_type(Lambda)
97+ #pragma acc routine(Lambda) dtype(Lambda) vector
98+ // CHECK-NEXT: OpenACCRoutineDecl{{.*}} routine name_specified
99+ // CHECK-NEXT: DeclRefExpr{{.*}} 'Lambda' 'const S::(lambda at
100+ // CHECK-NEXT: dtype(Lambda)
101+ // CHECK-NEXT: vector clause
80102};
81103
82104#pragma acc routine(S::MemFunc) gang(dim: 1)
@@ -150,6 +172,12 @@ struct DepS {
150172// CHECK-NEXT: DeclRefExpr{{.*}} 'StaticMemFunc' 'T ()'
151173// CHECK-NEXT: NestedNameSpecifier{{.*}} 'DepS<T>'
152174// CHECK-NEXT: worker clause
175+ #pragma acc routine(DepS<T>::StaticMemFunc) worker device_type(T)
176+ // CHECK-NEXT: OpenACCRoutineDecl{{.*}} routine name_specified
177+ // CHECK-NEXT: DeclRefExpr{{.*}} 'StaticMemFunc' 'T ()'
178+ // CHECK-NEXT: NestedNameSpecifier{{.*}} 'DepS<T>'
179+ // CHECK-NEXT: worker clause
180+ // CHECK-NEXT: device_type(T)
153181
154182// Instantiation:
155183// CHECK: ClassTemplateSpecializationDecl{{.*}}struct DepS
@@ -200,6 +228,12 @@ struct DepS {
200228// CHECK-NEXT: DeclRefExpr{{.*}} 'StaticMemFunc' 'int ()'
201229// CHECK-NEXT: NestedNameSpecifier{{.*}} 'DepS<int>'
202230// CHECK-NEXT: worker clause
231+
232+ // CHECK-NEXT: OpenACCRoutineDecl{{.*}} routine name_specified
233+ // CHECK-NEXT: DeclRefExpr{{.*}} 'StaticMemFunc' 'int ()'
234+ // CHECK-NEXT: NestedNameSpecifier{{.*}} 'DepS<int>'
235+ // CHECK-NEXT: worker clause
236+ // CHECK-NEXT: device_type(T)
203237};
204238
205239#pragma acc routine(DepS<int>::Lambda) gang(dim:1)
0 commit comments