]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/clang/include/clang/Basic/StmtNodes.td
zfs: merge openzfs/zfs@508fff0e4 (zfs-2.1-release) into stable/13
[FreeBSD/FreeBSD.git] / contrib / llvm-project / clang / include / clang / Basic / StmtNodes.td
1 include "clang/Basic/ASTNode.td"
2
3 class StmtNode<StmtNode base, bit abstract = 0> : ASTNode, AttrSubject {
4         StmtNode Base = base;
5   bit Abstract = abstract;
6 }
7
8 // Statements
9 def Stmt : StmtNode<?, 1>;
10 def NullStmt : StmtNode<Stmt>;
11 def CompoundStmt : StmtNode<Stmt>;
12 def IfStmt : StmtNode<Stmt>;
13 def SwitchStmt : StmtNode<Stmt>;
14 def WhileStmt : StmtNode<Stmt>;
15 def DoStmt : StmtNode<Stmt>;
16 def ForStmt : StmtNode<Stmt>;
17 def GotoStmt : StmtNode<Stmt>;
18 def IndirectGotoStmt : StmtNode<Stmt>;
19 def ContinueStmt : StmtNode<Stmt>;
20 def BreakStmt : StmtNode<Stmt>;
21 def ReturnStmt : StmtNode<Stmt>;
22 def DeclStmt  : StmtNode<Stmt>;
23 def SwitchCase : StmtNode<Stmt, 1>;
24 def CaseStmt : StmtNode<SwitchCase>;
25 def DefaultStmt : StmtNode<SwitchCase>;
26 def CapturedStmt : StmtNode<Stmt>;
27
28 // Statements that might produce a value (for example, as the last non-null
29 // statement in a GNU statement-expression).
30 def ValueStmt : StmtNode<Stmt, 1>;
31 def LabelStmt : StmtNode<ValueStmt>;
32 def AttributedStmt : StmtNode<ValueStmt>;
33
34 // Asm statements
35 def AsmStmt : StmtNode<Stmt, 1>;
36 def GCCAsmStmt : StmtNode<AsmStmt>;
37 def MSAsmStmt : StmtNode<AsmStmt>;
38
39 // Obj-C statements
40 def ObjCAtTryStmt : StmtNode<Stmt>;
41 def ObjCAtCatchStmt : StmtNode<Stmt>;
42 def ObjCAtFinallyStmt : StmtNode<Stmt>;
43 def ObjCAtThrowStmt : StmtNode<Stmt>;
44 def ObjCAtSynchronizedStmt : StmtNode<Stmt>;
45 def ObjCForCollectionStmt : StmtNode<Stmt>;
46 def ObjCAutoreleasePoolStmt : StmtNode<Stmt>;
47
48 // C++ statements
49 def CXXCatchStmt : StmtNode<Stmt>;
50 def CXXTryStmt : StmtNode<Stmt>;
51 def CXXForRangeStmt : StmtNode<Stmt>;
52
53 // C++ Coroutines TS statements
54 def CoroutineBodyStmt : StmtNode<Stmt>;
55 def CoreturnStmt : StmtNode<Stmt>;
56
57 // Expressions
58 def Expr : StmtNode<ValueStmt, 1>;
59 def PredefinedExpr : StmtNode<Expr>;
60 def DeclRefExpr : StmtNode<Expr>;
61 def IntegerLiteral : StmtNode<Expr>;
62 def FixedPointLiteral : StmtNode<Expr>;
63 def FloatingLiteral : StmtNode<Expr>;
64 def ImaginaryLiteral : StmtNode<Expr>;
65 def StringLiteral : StmtNode<Expr>;
66 def CharacterLiteral : StmtNode<Expr>;
67 def ParenExpr : StmtNode<Expr>;
68 def UnaryOperator : StmtNode<Expr>;
69 def OffsetOfExpr : StmtNode<Expr>;
70 def UnaryExprOrTypeTraitExpr : StmtNode<Expr>;
71 def ArraySubscriptExpr : StmtNode<Expr>;
72 def MatrixSubscriptExpr : StmtNode<Expr>;
73 def OMPArraySectionExpr : StmtNode<Expr>;
74 def OMPIteratorExpr : StmtNode<Expr>;
75 def CallExpr : StmtNode<Expr>;
76 def MemberExpr : StmtNode<Expr>;
77 def CastExpr : StmtNode<Expr, 1>;
78 def BinaryOperator : StmtNode<Expr>;
79 def CompoundAssignOperator : StmtNode<BinaryOperator>;
80 def AbstractConditionalOperator : StmtNode<Expr, 1>;
81 def ConditionalOperator : StmtNode<AbstractConditionalOperator>;
82 def BinaryConditionalOperator : StmtNode<AbstractConditionalOperator>;
83 def ImplicitCastExpr : StmtNode<CastExpr>;
84 def ExplicitCastExpr : StmtNode<CastExpr, 1>;
85 def CStyleCastExpr : StmtNode<ExplicitCastExpr>;
86 def OMPArrayShapingExpr : StmtNode<Expr>;
87 def CompoundLiteralExpr : StmtNode<Expr>;
88 def ExtVectorElementExpr : StmtNode<Expr>;
89 def InitListExpr : StmtNode<Expr>;
90 def DesignatedInitExpr : StmtNode<Expr>;
91 def DesignatedInitUpdateExpr : StmtNode<Expr>;
92 def ImplicitValueInitExpr : StmtNode<Expr>;
93 def NoInitExpr : StmtNode<Expr>;
94 def ArrayInitLoopExpr : StmtNode<Expr>;
95 def ArrayInitIndexExpr : StmtNode<Expr>;
96 def ParenListExpr : StmtNode<Expr>;
97 def VAArgExpr : StmtNode<Expr>;
98 def GenericSelectionExpr : StmtNode<Expr>;
99 def PseudoObjectExpr : StmtNode<Expr>;
100 def SourceLocExpr : StmtNode<Expr>;
101
102 // Wrapper expressions
103 def FullExpr : StmtNode<Expr, 1>;
104 def ConstantExpr : StmtNode<FullExpr>;
105
106 // Atomic expressions
107 def AtomicExpr : StmtNode<Expr>;
108
109 // GNU Extensions.
110 def AddrLabelExpr : StmtNode<Expr>;
111 def StmtExpr : StmtNode<Expr>;
112 def ChooseExpr : StmtNode<Expr>;
113 def GNUNullExpr : StmtNode<Expr>;
114
115 // C++ Expressions.
116 def CXXOperatorCallExpr : StmtNode<CallExpr>;
117 def CXXMemberCallExpr : StmtNode<CallExpr>;
118 def CXXRewrittenBinaryOperator : StmtNode<Expr>;
119 def CXXNamedCastExpr : StmtNode<ExplicitCastExpr, 1>;
120 def CXXStaticCastExpr : StmtNode<CXXNamedCastExpr>;
121 def CXXDynamicCastExpr : StmtNode<CXXNamedCastExpr>;
122 def CXXReinterpretCastExpr : StmtNode<CXXNamedCastExpr>;
123 def CXXConstCastExpr : StmtNode<CXXNamedCastExpr>;
124 def CXXAddrspaceCastExpr : StmtNode<CXXNamedCastExpr>;
125 def CXXFunctionalCastExpr : StmtNode<ExplicitCastExpr>;
126 def CXXTypeidExpr : StmtNode<Expr>;
127 def UserDefinedLiteral : StmtNode<CallExpr>;
128 def CXXBoolLiteralExpr : StmtNode<Expr>;
129 def CXXNullPtrLiteralExpr : StmtNode<Expr>;
130 def CXXThisExpr : StmtNode<Expr>;
131 def CXXThrowExpr : StmtNode<Expr>;
132 def CXXDefaultArgExpr : StmtNode<Expr>;
133 def CXXDefaultInitExpr : StmtNode<Expr>;
134 def CXXScalarValueInitExpr : StmtNode<Expr>;
135 def CXXStdInitializerListExpr : StmtNode<Expr>;
136 def CXXNewExpr : StmtNode<Expr>;
137 def CXXDeleteExpr : StmtNode<Expr>;
138 def CXXPseudoDestructorExpr : StmtNode<Expr>;
139 def TypeTraitExpr : StmtNode<Expr>;
140 def ArrayTypeTraitExpr : StmtNode<Expr>;
141 def ExpressionTraitExpr : StmtNode<Expr>;
142 def DependentScopeDeclRefExpr : StmtNode<Expr>;
143 def CXXConstructExpr : StmtNode<Expr>;
144 def CXXInheritedCtorInitExpr : StmtNode<Expr>;
145 def CXXBindTemporaryExpr : StmtNode<Expr>;
146 def ExprWithCleanups : StmtNode<FullExpr>;
147 def CXXTemporaryObjectExpr : StmtNode<CXXConstructExpr>;
148 def CXXUnresolvedConstructExpr : StmtNode<Expr>;
149 def CXXDependentScopeMemberExpr : StmtNode<Expr>;
150 def OverloadExpr : StmtNode<Expr, 1>;
151 def UnresolvedLookupExpr : StmtNode<OverloadExpr>;
152 def UnresolvedMemberExpr : StmtNode<OverloadExpr>;
153 def CXXNoexceptExpr : StmtNode<Expr>;
154 def PackExpansionExpr : StmtNode<Expr>;
155 def SizeOfPackExpr : StmtNode<Expr>;
156 def SubstNonTypeTemplateParmExpr : StmtNode<Expr>;
157 def SubstNonTypeTemplateParmPackExpr : StmtNode<Expr>;
158 def FunctionParmPackExpr : StmtNode<Expr>;
159 def MaterializeTemporaryExpr : StmtNode<Expr>;
160 def LambdaExpr : StmtNode<Expr>;
161 def CXXFoldExpr : StmtNode<Expr>;
162
163 // C++ Coroutines TS expressions
164 def CoroutineSuspendExpr : StmtNode<Expr, 1>;
165 def CoawaitExpr : StmtNode<CoroutineSuspendExpr>;
166 def DependentCoawaitExpr : StmtNode<Expr>;
167 def CoyieldExpr : StmtNode<CoroutineSuspendExpr>;
168
169 // C++20 Concepts expressions
170 def ConceptSpecializationExpr : StmtNode<Expr>;
171 def RequiresExpr : StmtNode<Expr>;
172
173 // Obj-C Expressions.
174 def ObjCStringLiteral : StmtNode<Expr>;
175 def ObjCBoxedExpr : StmtNode<Expr>;
176 def ObjCArrayLiteral : StmtNode<Expr>;
177 def ObjCDictionaryLiteral : StmtNode<Expr>;
178 def ObjCEncodeExpr : StmtNode<Expr>;
179 def ObjCMessageExpr : StmtNode<Expr>;
180 def ObjCSelectorExpr : StmtNode<Expr>;
181 def ObjCProtocolExpr : StmtNode<Expr>;
182 def ObjCIvarRefExpr : StmtNode<Expr>;
183 def ObjCPropertyRefExpr : StmtNode<Expr>;
184 def ObjCIsaExpr : StmtNode<Expr>;
185 def ObjCIndirectCopyRestoreExpr : StmtNode<Expr>;
186 def ObjCBoolLiteralExpr : StmtNode<Expr>;
187 def ObjCSubscriptRefExpr : StmtNode<Expr>;
188 def ObjCAvailabilityCheckExpr : StmtNode<Expr>;
189
190 // Obj-C ARC Expressions.
191 def ObjCBridgedCastExpr : StmtNode<ExplicitCastExpr>;
192
193 // CUDA Expressions.
194 def CUDAKernelCallExpr : StmtNode<CallExpr>;
195
196 // Clang Extensions.
197 def ShuffleVectorExpr : StmtNode<Expr>;
198 def ConvertVectorExpr : StmtNode<Expr>;
199 def BlockExpr : StmtNode<Expr>;
200 def OpaqueValueExpr : StmtNode<Expr>;
201 def TypoExpr : StmtNode<Expr>;
202 def RecoveryExpr : StmtNode<Expr>;
203 def BuiltinBitCastExpr : StmtNode<ExplicitCastExpr>;
204
205 // Microsoft Extensions.
206 def MSPropertyRefExpr : StmtNode<Expr>;
207 def MSPropertySubscriptExpr : StmtNode<Expr>;
208 def CXXUuidofExpr : StmtNode<Expr>;
209 def SEHTryStmt : StmtNode<Stmt>;
210 def SEHExceptStmt : StmtNode<Stmt>;
211 def SEHFinallyStmt : StmtNode<Stmt>;
212 def SEHLeaveStmt : StmtNode<Stmt>;
213 def MSDependentExistsStmt : StmtNode<Stmt>;
214
215 // OpenCL Extensions.
216 def AsTypeExpr : StmtNode<Expr>;
217
218 // OpenMP Directives.
219 def OMPExecutableDirective : StmtNode<Stmt, 1>;
220 def OMPLoopDirective : StmtNode<OMPExecutableDirective, 1>;
221 def OMPParallelDirective : StmtNode<OMPExecutableDirective>;
222 def OMPSimdDirective : StmtNode<OMPLoopDirective>;
223 def OMPForDirective : StmtNode<OMPLoopDirective>;
224 def OMPForSimdDirective : StmtNode<OMPLoopDirective>;
225 def OMPSectionsDirective : StmtNode<OMPExecutableDirective>;
226 def OMPSectionDirective : StmtNode<OMPExecutableDirective>;
227 def OMPSingleDirective : StmtNode<OMPExecutableDirective>;
228 def OMPMasterDirective : StmtNode<OMPExecutableDirective>;
229 def OMPCriticalDirective : StmtNode<OMPExecutableDirective>;
230 def OMPParallelForDirective : StmtNode<OMPLoopDirective>;
231 def OMPParallelForSimdDirective : StmtNode<OMPLoopDirective>;
232 def OMPParallelMasterDirective : StmtNode<OMPExecutableDirective>;
233 def OMPParallelSectionsDirective : StmtNode<OMPExecutableDirective>;
234 def OMPTaskDirective : StmtNode<OMPExecutableDirective>;
235 def OMPTaskyieldDirective : StmtNode<OMPExecutableDirective>;
236 def OMPBarrierDirective : StmtNode<OMPExecutableDirective>;
237 def OMPTaskwaitDirective : StmtNode<OMPExecutableDirective>;
238 def OMPTaskgroupDirective : StmtNode<OMPExecutableDirective>;
239 def OMPFlushDirective : StmtNode<OMPExecutableDirective>;
240 def OMPDepobjDirective : StmtNode<OMPExecutableDirective>;
241 def OMPScanDirective : StmtNode<OMPExecutableDirective>;
242 def OMPOrderedDirective : StmtNode<OMPExecutableDirective>;
243 def OMPAtomicDirective : StmtNode<OMPExecutableDirective>;
244 def OMPTargetDirective : StmtNode<OMPExecutableDirective>;
245 def OMPTargetDataDirective : StmtNode<OMPExecutableDirective>;
246 def OMPTargetEnterDataDirective : StmtNode<OMPExecutableDirective>;
247 def OMPTargetExitDataDirective : StmtNode<OMPExecutableDirective>;
248 def OMPTargetParallelDirective : StmtNode<OMPExecutableDirective>;
249 def OMPTargetParallelForDirective : StmtNode<OMPExecutableDirective>;
250 def OMPTargetUpdateDirective : StmtNode<OMPExecutableDirective>;
251 def OMPTeamsDirective : StmtNode<OMPExecutableDirective>;
252 def OMPCancellationPointDirective : StmtNode<OMPExecutableDirective>;
253 def OMPCancelDirective : StmtNode<OMPExecutableDirective>;
254 def OMPTaskLoopDirective : StmtNode<OMPLoopDirective>;
255 def OMPTaskLoopSimdDirective : StmtNode<OMPLoopDirective>;
256 def OMPMasterTaskLoopDirective : StmtNode<OMPLoopDirective>;
257 def OMPMasterTaskLoopSimdDirective : StmtNode<OMPLoopDirective>;
258 def OMPParallelMasterTaskLoopDirective : StmtNode<OMPLoopDirective>;
259 def OMPParallelMasterTaskLoopSimdDirective : StmtNode<OMPLoopDirective>;
260 def OMPDistributeDirective : StmtNode<OMPLoopDirective>;
261 def OMPDistributeParallelForDirective : StmtNode<OMPLoopDirective>;
262 def OMPDistributeParallelForSimdDirective : StmtNode<OMPLoopDirective>;
263 def OMPDistributeSimdDirective : StmtNode<OMPLoopDirective>;
264 def OMPTargetParallelForSimdDirective : StmtNode<OMPLoopDirective>;
265 def OMPTargetSimdDirective : StmtNode<OMPLoopDirective>;
266 def OMPTeamsDistributeDirective : StmtNode<OMPLoopDirective>;
267 def OMPTeamsDistributeSimdDirective : StmtNode<OMPLoopDirective>;
268 def OMPTeamsDistributeParallelForSimdDirective : StmtNode<OMPLoopDirective>;
269 def OMPTeamsDistributeParallelForDirective : StmtNode<OMPLoopDirective>;
270 def OMPTargetTeamsDirective : StmtNode<OMPExecutableDirective>;
271 def OMPTargetTeamsDistributeDirective : StmtNode<OMPLoopDirective>;
272 def OMPTargetTeamsDistributeParallelForDirective : StmtNode<OMPLoopDirective>;
273 def OMPTargetTeamsDistributeParallelForSimdDirective : StmtNode<OMPLoopDirective>;
274 def OMPTargetTeamsDistributeSimdDirective : StmtNode<OMPLoopDirective>;