Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//===--- ComputeDependence.h -------------------------------------- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
//  Calculate various template dependency flags for the AST.
10
//
11
//===----------------------------------------------------------------------===//
12
 
13
#ifndef LLVM_CLANG_AST_COMPUTEDEPENDENCE_H
14
#define LLVM_CLANG_AST_COMPUTEDEPENDENCE_H
15
 
16
#include "clang/AST/DependenceFlags.h"
17
#include "clang/Basic/ExceptionSpecificationType.h"
18
#include "llvm/ADT/ArrayRef.h"
19
 
20
namespace clang {
21
 
22
class ASTContext;
23
 
24
class Expr;
25
class FullExpr;
26
class OpaqueValueExpr;
27
class ParenExpr;
28
class UnaryOperator;
29
class UnaryExprOrTypeTraitExpr;
30
class ArraySubscriptExpr;
31
class MatrixSubscriptExpr;
32
class CompoundLiteralExpr;
33
class ImplicitCastExpr;
34
class ExplicitCastExpr;
35
class BinaryOperator;
36
class ConditionalOperator;
37
class BinaryConditionalOperator;
38
class StmtExpr;
39
class ConvertVectorExpr;
40
class VAArgExpr;
41
class ChooseExpr;
42
class NoInitExpr;
43
class ArrayInitLoopExpr;
44
class ImplicitValueInitExpr;
45
class InitListExpr;
46
class ExtVectorElementExpr;
47
class BlockExpr;
48
class AsTypeExpr;
49
class DeclRefExpr;
50
class RecoveryExpr;
51
class CXXRewrittenBinaryOperator;
52
class CXXStdInitializerListExpr;
53
class CXXTypeidExpr;
54
class MSPropertyRefExpr;
55
class MSPropertySubscriptExpr;
56
class CXXUuidofExpr;
57
class CXXThisExpr;
58
class CXXThrowExpr;
59
class CXXBindTemporaryExpr;
60
class CXXScalarValueInitExpr;
61
class CXXDeleteExpr;
62
class ArrayTypeTraitExpr;
63
class ExpressionTraitExpr;
64
class CXXNoexceptExpr;
65
class PackExpansionExpr;
66
class SubstNonTypeTemplateParmExpr;
67
class CoroutineSuspendExpr;
68
class DependentCoawaitExpr;
69
class CXXNewExpr;
70
class CXXPseudoDestructorExpr;
71
class OverloadExpr;
72
class DependentScopeDeclRefExpr;
73
class CXXConstructExpr;
74
class CXXTemporaryObjectExpr;
75
class CXXDefaultInitExpr;
76
class CXXDefaultArgExpr;
77
class LambdaExpr;
78
class CXXUnresolvedConstructExpr;
79
class CXXDependentScopeMemberExpr;
80
class MaterializeTemporaryExpr;
81
class CXXFoldExpr;
82
class CXXParenListInitExpr;
83
class TypeTraitExpr;
84
class ConceptSpecializationExpr;
85
class SYCLUniqueStableNameExpr;
86
class PredefinedExpr;
87
class CallExpr;
88
class OffsetOfExpr;
89
class MemberExpr;
90
class ShuffleVectorExpr;
91
class GenericSelectionExpr;
92
class DesignatedInitExpr;
93
class ParenListExpr;
94
class PseudoObjectExpr;
95
class AtomicExpr;
96
class OMPArraySectionExpr;
97
class OMPArrayShapingExpr;
98
class OMPIteratorExpr;
99
class ObjCArrayLiteral;
100
class ObjCDictionaryLiteral;
101
class ObjCBoxedExpr;
102
class ObjCEncodeExpr;
103
class ObjCIvarRefExpr;
104
class ObjCPropertyRefExpr;
105
class ObjCSubscriptRefExpr;
106
class ObjCIsaExpr;
107
class ObjCIndirectCopyRestoreExpr;
108
class ObjCMessageExpr;
109
 
110
// The following functions are called from constructors of `Expr`, so they
111
// should not access anything beyond basic
112
ExprDependence computeDependence(FullExpr *E);
113
ExprDependence computeDependence(OpaqueValueExpr *E);
114
ExprDependence computeDependence(ParenExpr *E);
115
ExprDependence computeDependence(UnaryOperator *E, const ASTContext &Ctx);
116
ExprDependence computeDependence(UnaryExprOrTypeTraitExpr *E);
117
ExprDependence computeDependence(ArraySubscriptExpr *E);
118
ExprDependence computeDependence(MatrixSubscriptExpr *E);
119
ExprDependence computeDependence(CompoundLiteralExpr *E);
120
ExprDependence computeDependence(ImplicitCastExpr *E);
121
ExprDependence computeDependence(ExplicitCastExpr *E);
122
ExprDependence computeDependence(BinaryOperator *E);
123
ExprDependence computeDependence(ConditionalOperator *E);
124
ExprDependence computeDependence(BinaryConditionalOperator *E);
125
ExprDependence computeDependence(StmtExpr *E, unsigned TemplateDepth);
126
ExprDependence computeDependence(ConvertVectorExpr *E);
127
ExprDependence computeDependence(VAArgExpr *E);
128
ExprDependence computeDependence(ChooseExpr *E);
129
ExprDependence computeDependence(NoInitExpr *E);
130
ExprDependence computeDependence(ArrayInitLoopExpr *E);
131
ExprDependence computeDependence(ImplicitValueInitExpr *E);
132
ExprDependence computeDependence(InitListExpr *E);
133
ExprDependence computeDependence(ExtVectorElementExpr *E);
134
ExprDependence computeDependence(BlockExpr *E);
135
ExprDependence computeDependence(AsTypeExpr *E);
136
ExprDependence computeDependence(DeclRefExpr *E, const ASTContext &Ctx);
137
ExprDependence computeDependence(RecoveryExpr *E);
138
ExprDependence computeDependence(CXXRewrittenBinaryOperator *E);
139
ExprDependence computeDependence(CXXStdInitializerListExpr *E);
140
ExprDependence computeDependence(CXXTypeidExpr *E);
141
ExprDependence computeDependence(MSPropertyRefExpr *E);
142
ExprDependence computeDependence(MSPropertySubscriptExpr *E);
143
ExprDependence computeDependence(CXXUuidofExpr *E);
144
ExprDependence computeDependence(CXXThisExpr *E);
145
ExprDependence computeDependence(CXXThrowExpr *E);
146
ExprDependence computeDependence(CXXBindTemporaryExpr *E);
147
ExprDependence computeDependence(CXXScalarValueInitExpr *E);
148
ExprDependence computeDependence(CXXDeleteExpr *E);
149
ExprDependence computeDependence(ArrayTypeTraitExpr *E);
150
ExprDependence computeDependence(ExpressionTraitExpr *E);
151
ExprDependence computeDependence(CXXNoexceptExpr *E, CanThrowResult CT);
152
ExprDependence computeDependence(PackExpansionExpr *E);
153
ExprDependence computeDependence(SubstNonTypeTemplateParmExpr *E);
154
ExprDependence computeDependence(CoroutineSuspendExpr *E);
155
ExprDependence computeDependence(DependentCoawaitExpr *E);
156
ExprDependence computeDependence(CXXNewExpr *E);
157
ExprDependence computeDependence(CXXPseudoDestructorExpr *E);
158
ExprDependence computeDependence(OverloadExpr *E, bool KnownDependent,
159
                                 bool KnownInstantiationDependent,
160
                                 bool KnownContainsUnexpandedParameterPack);
161
ExprDependence computeDependence(DependentScopeDeclRefExpr *E);
162
ExprDependence computeDependence(CXXConstructExpr *E);
163
ExprDependence computeDependence(CXXTemporaryObjectExpr *E);
164
ExprDependence computeDependence(CXXDefaultInitExpr *E);
165
ExprDependence computeDependence(CXXDefaultArgExpr *E);
166
ExprDependence computeDependence(LambdaExpr *E,
167
                                 bool ContainsUnexpandedParameterPack);
168
ExprDependence computeDependence(CXXUnresolvedConstructExpr *E);
169
ExprDependence computeDependence(CXXDependentScopeMemberExpr *E);
170
ExprDependence computeDependence(MaterializeTemporaryExpr *E);
171
ExprDependence computeDependence(CXXFoldExpr *E);
172
ExprDependence computeDependence(CXXParenListInitExpr *E);
173
ExprDependence computeDependence(TypeTraitExpr *E);
174
ExprDependence computeDependence(ConceptSpecializationExpr *E,
175
                                 bool ValueDependent);
176
 
177
ExprDependence computeDependence(SYCLUniqueStableNameExpr *E);
178
ExprDependence computeDependence(PredefinedExpr *E);
179
ExprDependence computeDependence(CallExpr *E, llvm::ArrayRef<Expr *> PreArgs);
180
ExprDependence computeDependence(OffsetOfExpr *E);
181
ExprDependence computeDependence(MemberExpr *E);
182
ExprDependence computeDependence(ShuffleVectorExpr *E);
183
ExprDependence computeDependence(GenericSelectionExpr *E,
184
                                 bool ContainsUnexpandedPack);
185
ExprDependence computeDependence(DesignatedInitExpr *E);
186
ExprDependence computeDependence(ParenListExpr *E);
187
ExprDependence computeDependence(PseudoObjectExpr *E);
188
ExprDependence computeDependence(AtomicExpr *E);
189
 
190
ExprDependence computeDependence(OMPArraySectionExpr *E);
191
ExprDependence computeDependence(OMPArrayShapingExpr *E);
192
ExprDependence computeDependence(OMPIteratorExpr *E);
193
 
194
ExprDependence computeDependence(ObjCArrayLiteral *E);
195
ExprDependence computeDependence(ObjCDictionaryLiteral *E);
196
ExprDependence computeDependence(ObjCBoxedExpr *E);
197
ExprDependence computeDependence(ObjCEncodeExpr *E);
198
ExprDependence computeDependence(ObjCIvarRefExpr *E);
199
ExprDependence computeDependence(ObjCPropertyRefExpr *E);
200
ExprDependence computeDependence(ObjCSubscriptRefExpr *E);
201
ExprDependence computeDependence(ObjCIsaExpr *E);
202
ExprDependence computeDependence(ObjCIndirectCopyRestoreExpr *E);
203
ExprDependence computeDependence(ObjCMessageExpr *E);
204
 
205
} // namespace clang
206
#endif