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