[libc++][NFC] Replace typedefs with using aliases in <string> (#126070)
[llvm-project.git] / clang / test / SemaOpenACC / loop-construct-device_type-ast.cpp
blob0030750a20db320e406d7af23fd4cb505f12a2dc
1 // RUN: %clang_cc1 %s -fopenacc -ast-dump | FileCheck %s
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 #ifndef PCH_HELPER
7 #define PCH_HELPER
9 struct SomeS{};
10 void NormalUses() {
11 // CHECK: FunctionDecl{{.*}}NormalUses
12 // CHECK-NEXT: CompoundStmt
14 SomeS SomeImpl;
15 // CHECK-NEXT: DeclStmt
16 // CHECK-NEXT: VarDecl{{.*}} SomeImpl 'SomeS'
17 // CHECK-NEXT: CXXConstructExpr
18 bool SomeVar;
19 // CHECK-NEXT: DeclStmt
20 // CHECK-NEXT: VarDecl{{.*}} SomeVar 'bool'
22 #pragma acc loop device_type(SomeS) dtype(SomeImpl)
23 for(int i = 0; i < 5; ++i){}
24 // CHECK-NEXT: OpenACCLoopConstruct{{.*}}
25 // CHECK-NEXT: device_type(SomeS)
26 // CHECK-NEXT: dtype(SomeImpl)
27 // CHECK-NEXT: ForStmt
28 // CHECK-NEXT: DeclStmt
29 // CHECK-NEXT: VarDecl{{.*}} i 'int'
30 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0
31 // CHECK-NEXT: <<<NULL>>>
32 // CHECK-NEXT: BinaryOperator{{.*}}'<'
33 // CHECK-NEXT: ImplicitCastExpr
34 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
35 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5
36 // CHECK-NEXT: UnaryOperator{{.*}}++
37 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
38 // CHECK-NEXT: CompoundStmt
39 #pragma acc loop device_type(SomeVar) dtype(int)
40 for(int i = 0; i < 5; ++i){}
41 // CHECK-NEXT: OpenACCLoopConstruct{{.*}}
42 // CHECK-NEXT: device_type(SomeVar)
43 // CHECK-NEXT: dtype(int)
44 // CHECK-NEXT: ForStmt
45 // CHECK-NEXT: DeclStmt
46 // CHECK-NEXT: VarDecl{{.*}} i 'int'
47 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0
48 // CHECK-NEXT: <<<NULL>>>
49 // CHECK-NEXT: BinaryOperator{{.*}}'<'
50 // CHECK-NEXT: ImplicitCastExpr
51 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
52 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5
53 // CHECK-NEXT: UnaryOperator{{.*}}++
54 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
55 // CHECK-NEXT: CompoundStmt
56 #pragma acc loop device_type(private) dtype(struct)
57 for(int i = 0; i < 5; ++i){}
58 // CHECK-NEXT: OpenACCLoopConstruct{{.*}}
59 // CHECK-NEXT: device_type(private)
60 // CHECK-NEXT: dtype(struct)
61 // CHECK-NEXT: ForStmt
62 // CHECK-NEXT: DeclStmt
63 // CHECK-NEXT: VarDecl{{.*}} i 'int'
64 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0
65 // CHECK-NEXT: <<<NULL>>>
66 // CHECK-NEXT: BinaryOperator{{.*}}'<'
67 // CHECK-NEXT: ImplicitCastExpr
68 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
69 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5
70 // CHECK-NEXT: UnaryOperator{{.*}}++
71 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
72 // CHECK-NEXT: CompoundStmt
73 #pragma acc loop device_type(private) dtype(class)
74 for(int i = 0; i < 5; ++i){}
75 // CHECK-NEXT: OpenACCLoopConstruct{{.*}}
76 // CHECK-NEXT: device_type(private)
77 // CHECK-NEXT: dtype(class)
78 // CHECK-NEXT: ForStmt
79 // CHECK-NEXT: DeclStmt
80 // CHECK-NEXT: VarDecl{{.*}} i 'int'
81 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0
82 // CHECK-NEXT: <<<NULL>>>
83 // CHECK-NEXT: BinaryOperator{{.*}}'<'
84 // CHECK-NEXT: ImplicitCastExpr
85 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
86 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5
87 // CHECK-NEXT: UnaryOperator{{.*}}++
88 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
89 // CHECK-NEXT: CompoundStmt
90 #pragma acc loop device_type(float) dtype(*)
91 for(int i = 0; i < 5; ++i){}
92 // CHECK-NEXT: OpenACCLoopConstruct{{.*}}
93 // CHECK-NEXT: device_type(float)
94 // CHECK-NEXT: dtype(*)
95 // CHECK-NEXT: ForStmt
96 // CHECK-NEXT: DeclStmt
97 // CHECK-NEXT: VarDecl{{.*}} i 'int'
98 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0
99 // CHECK-NEXT: <<<NULL>>>
100 // CHECK-NEXT: BinaryOperator{{.*}}'<'
101 // CHECK-NEXT: ImplicitCastExpr
102 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
103 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5
104 // CHECK-NEXT: UnaryOperator{{.*}}++
105 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
106 // CHECK-NEXT: CompoundStmt
107 #pragma acc loop device_type(float, int) dtype(*)
108 for(int i = 0; i < 5; ++i){}
109 // CHECK-NEXT: OpenACCLoopConstruct{{.*}}
110 // CHECK-NEXT: device_type(float, int)
111 // CHECK-NEXT: dtype(*)
112 // CHECK-NEXT: ForStmt
113 // CHECK-NEXT: DeclStmt
114 // CHECK-NEXT: VarDecl{{.*}} i 'int'
115 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0
116 // CHECK-NEXT: <<<NULL>>>
117 // CHECK-NEXT: BinaryOperator{{.*}}'<'
118 // CHECK-NEXT: ImplicitCastExpr
119 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
120 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5
121 // CHECK-NEXT: UnaryOperator{{.*}}++
122 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
123 // CHECK-NEXT: CompoundStmt
126 template<typename T>
127 void TemplUses() {
128 // CHECK-NEXT: FunctionTemplateDecl{{.*}}TemplUses
129 // CHECK-NEXT: TemplateTypeParmDecl{{.*}}T
130 // CHECK-NEXT: FunctionDecl{{.*}}TemplUses
131 // CHECK-NEXT: CompoundStmt
132 #pragma acc loop device_type(T) dtype(T)
133 for(int i = 0; i < 5; ++i){}
134 // CHECK-NEXT: OpenACCLoopConstruct{{.*}}
135 // CHECK-NEXT: device_type(T)
136 // CHECK-NEXT: dtype(T)
137 // CHECK-NEXT: ForStmt
138 // CHECK-NEXT: DeclStmt
139 // CHECK-NEXT: VarDecl{{.*}} i 'int'
140 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0
141 // CHECK-NEXT: <<<NULL>>>
142 // CHECK-NEXT: BinaryOperator{{.*}}'<'
143 // CHECK-NEXT: ImplicitCastExpr
144 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
145 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5
146 // CHECK-NEXT: UnaryOperator{{.*}}++
147 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
148 // CHECK-NEXT: CompoundStmt
151 // Instantiations
152 // CHECK-NEXT: FunctionDecl{{.*}} TemplUses 'void ()' implicit_instantiation
153 // CHECK-NEXT: TemplateArgument type 'int'
154 // CHECK-NEXT: BuiltinType{{.*}} 'int'
155 // CHECK-NEXT: CompoundStmt
157 // CHECK-NEXT: OpenACCLoopConstruct{{.*}}
158 // CHECK-NEXT: device_type(T)
159 // CHECK-NEXT: dtype(T)
160 // CHECK-NEXT: ForStmt
161 // CHECK-NEXT: DeclStmt
162 // CHECK-NEXT: VarDecl{{.*}} i 'int'
163 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0
164 // CHECK-NEXT: <<<NULL>>>
165 // CHECK-NEXT: BinaryOperator{{.*}}'<'
166 // CHECK-NEXT: ImplicitCastExpr
167 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
168 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5
169 // CHECK-NEXT: UnaryOperator{{.*}}++
170 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
171 // CHECK-NEXT: CompoundStmt
174 void Inst() {
175 TemplUses<int>();
177 #endif // PCH_HELPER