Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:36:30

0001 //===--- ComputeDependence.h -------------------------------------- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 //
0009 //  Calculate various template dependency flags for the AST.
0010 //
0011 //===----------------------------------------------------------------------===//
0012 
0013 #ifndef LLVM_CLANG_AST_COMPUTEDEPENDENCE_H
0014 #define LLVM_CLANG_AST_COMPUTEDEPENDENCE_H
0015 
0016 #include "clang/AST/DependenceFlags.h"
0017 #include "clang/Basic/ExceptionSpecificationType.h"
0018 #include "llvm/ADT/ArrayRef.h"
0019 
0020 namespace clang {
0021 
0022 class ASTContext;
0023 
0024 class Expr;
0025 class FullExpr;
0026 class OpaqueValueExpr;
0027 class ParenExpr;
0028 class UnaryOperator;
0029 class UnaryExprOrTypeTraitExpr;
0030 class ArraySubscriptExpr;
0031 class MatrixSubscriptExpr;
0032 class CompoundLiteralExpr;
0033 class ImplicitCastExpr;
0034 class ExplicitCastExpr;
0035 class BinaryOperator;
0036 class ConditionalOperator;
0037 class BinaryConditionalOperator;
0038 class StmtExpr;
0039 class ConvertVectorExpr;
0040 class VAArgExpr;
0041 class ChooseExpr;
0042 class NoInitExpr;
0043 class ArrayInitLoopExpr;
0044 class ImplicitValueInitExpr;
0045 class InitListExpr;
0046 class ExtVectorElementExpr;
0047 class BlockExpr;
0048 class AsTypeExpr;
0049 class DeclRefExpr;
0050 class RecoveryExpr;
0051 class CXXRewrittenBinaryOperator;
0052 class CXXStdInitializerListExpr;
0053 class CXXTypeidExpr;
0054 class MSPropertyRefExpr;
0055 class MSPropertySubscriptExpr;
0056 class CXXUuidofExpr;
0057 class CXXThisExpr;
0058 class CXXThrowExpr;
0059 class CXXBindTemporaryExpr;
0060 class CXXScalarValueInitExpr;
0061 class CXXDeleteExpr;
0062 class ArrayTypeTraitExpr;
0063 class ExpressionTraitExpr;
0064 class CXXNoexceptExpr;
0065 class PackExpansionExpr;
0066 class PackIndexingExpr;
0067 class SubstNonTypeTemplateParmExpr;
0068 class CoroutineSuspendExpr;
0069 class DependentCoawaitExpr;
0070 class CXXNewExpr;
0071 class CXXPseudoDestructorExpr;
0072 class OverloadExpr;
0073 class DependentScopeDeclRefExpr;
0074 class CXXConstructExpr;
0075 class CXXTemporaryObjectExpr;
0076 class CXXDefaultInitExpr;
0077 class CXXDefaultArgExpr;
0078 class LambdaExpr;
0079 class CXXUnresolvedConstructExpr;
0080 class CXXDependentScopeMemberExpr;
0081 class MaterializeTemporaryExpr;
0082 class CXXFoldExpr;
0083 class CXXParenListInitExpr;
0084 class TypeTraitExpr;
0085 class ConceptSpecializationExpr;
0086 class SYCLUniqueStableNameExpr;
0087 class PredefinedExpr;
0088 class CallExpr;
0089 class OffsetOfExpr;
0090 class MemberExpr;
0091 class ShuffleVectorExpr;
0092 class GenericSelectionExpr;
0093 class DesignatedInitExpr;
0094 class ParenListExpr;
0095 class PseudoObjectExpr;
0096 class AtomicExpr;
0097 class ArraySectionExpr;
0098 class OMPArrayShapingExpr;
0099 class OMPIteratorExpr;
0100 class ObjCArrayLiteral;
0101 class ObjCDictionaryLiteral;
0102 class ObjCBoxedExpr;
0103 class ObjCEncodeExpr;
0104 class ObjCIvarRefExpr;
0105 class ObjCPropertyRefExpr;
0106 class ObjCSubscriptRefExpr;
0107 class ObjCIsaExpr;
0108 class ObjCIndirectCopyRestoreExpr;
0109 class ObjCMessageExpr;
0110 class OpenACCAsteriskSizeExpr;
0111 
0112 // The following functions are called from constructors of `Expr`, so they
0113 // should not access anything beyond basic
0114 ExprDependence computeDependence(FullExpr *E);
0115 ExprDependence computeDependence(OpaqueValueExpr *E);
0116 ExprDependence computeDependence(ParenExpr *E);
0117 ExprDependence computeDependence(UnaryOperator *E, const ASTContext &Ctx);
0118 ExprDependence computeDependence(UnaryExprOrTypeTraitExpr *E);
0119 ExprDependence computeDependence(ArraySubscriptExpr *E);
0120 ExprDependence computeDependence(MatrixSubscriptExpr *E);
0121 ExprDependence computeDependence(CompoundLiteralExpr *E);
0122 ExprDependence computeDependence(ImplicitCastExpr *E);
0123 ExprDependence computeDependence(ExplicitCastExpr *E);
0124 ExprDependence computeDependence(BinaryOperator *E);
0125 ExprDependence computeDependence(ConditionalOperator *E);
0126 ExprDependence computeDependence(BinaryConditionalOperator *E);
0127 ExprDependence computeDependence(StmtExpr *E, unsigned TemplateDepth);
0128 ExprDependence computeDependence(ConvertVectorExpr *E);
0129 ExprDependence computeDependence(VAArgExpr *E);
0130 ExprDependence computeDependence(ChooseExpr *E);
0131 ExprDependence computeDependence(NoInitExpr *E);
0132 ExprDependence computeDependence(ArrayInitLoopExpr *E);
0133 ExprDependence computeDependence(ImplicitValueInitExpr *E);
0134 ExprDependence computeDependence(InitListExpr *E);
0135 ExprDependence computeDependence(ExtVectorElementExpr *E);
0136 ExprDependence computeDependence(BlockExpr *E,
0137                                  bool ContainsUnexpandedParameterPack);
0138 ExprDependence computeDependence(AsTypeExpr *E);
0139 ExprDependence computeDependence(DeclRefExpr *E, const ASTContext &Ctx);
0140 ExprDependence computeDependence(RecoveryExpr *E);
0141 ExprDependence computeDependence(CXXRewrittenBinaryOperator *E);
0142 ExprDependence computeDependence(CXXStdInitializerListExpr *E);
0143 ExprDependence computeDependence(CXXTypeidExpr *E);
0144 ExprDependence computeDependence(MSPropertyRefExpr *E);
0145 ExprDependence computeDependence(MSPropertySubscriptExpr *E);
0146 ExprDependence computeDependence(CXXUuidofExpr *E);
0147 ExprDependence computeDependence(CXXThisExpr *E);
0148 ExprDependence computeDependence(CXXThrowExpr *E);
0149 ExprDependence computeDependence(CXXBindTemporaryExpr *E);
0150 ExprDependence computeDependence(CXXScalarValueInitExpr *E);
0151 ExprDependence computeDependence(CXXDeleteExpr *E);
0152 ExprDependence computeDependence(ArrayTypeTraitExpr *E);
0153 ExprDependence computeDependence(ExpressionTraitExpr *E);
0154 ExprDependence computeDependence(CXXNoexceptExpr *E, CanThrowResult CT);
0155 ExprDependence computeDependence(PackExpansionExpr *E);
0156 ExprDependence computeDependence(PackIndexingExpr *E);
0157 ExprDependence computeDependence(SubstNonTypeTemplateParmExpr *E);
0158 ExprDependence computeDependence(CoroutineSuspendExpr *E);
0159 ExprDependence computeDependence(DependentCoawaitExpr *E);
0160 ExprDependence computeDependence(CXXNewExpr *E);
0161 ExprDependence computeDependence(CXXPseudoDestructorExpr *E);
0162 ExprDependence computeDependence(OverloadExpr *E, bool KnownDependent,
0163                                  bool KnownInstantiationDependent,
0164                                  bool KnownContainsUnexpandedParameterPack);
0165 ExprDependence computeDependence(DependentScopeDeclRefExpr *E);
0166 ExprDependence computeDependence(CXXConstructExpr *E);
0167 ExprDependence computeDependence(CXXTemporaryObjectExpr *E);
0168 ExprDependence computeDependence(CXXDefaultInitExpr *E);
0169 ExprDependence computeDependence(CXXDefaultArgExpr *E);
0170 ExprDependence computeDependence(LambdaExpr *E,
0171                                  bool ContainsUnexpandedParameterPack);
0172 ExprDependence computeDependence(CXXUnresolvedConstructExpr *E);
0173 ExprDependence computeDependence(CXXDependentScopeMemberExpr *E);
0174 ExprDependence computeDependence(MaterializeTemporaryExpr *E);
0175 ExprDependence computeDependence(CXXFoldExpr *E);
0176 ExprDependence computeDependence(CXXParenListInitExpr *E);
0177 ExprDependence computeDependence(TypeTraitExpr *E);
0178 ExprDependence computeDependence(ConceptSpecializationExpr *E,
0179                                  bool ValueDependent);
0180 
0181 ExprDependence computeDependence(SYCLUniqueStableNameExpr *E);
0182 ExprDependence computeDependence(PredefinedExpr *E);
0183 ExprDependence computeDependence(CallExpr *E, llvm::ArrayRef<Expr *> PreArgs);
0184 ExprDependence computeDependence(OffsetOfExpr *E);
0185 ExprDependence computeDependence(MemberExpr *E);
0186 ExprDependence computeDependence(ShuffleVectorExpr *E);
0187 ExprDependence computeDependence(GenericSelectionExpr *E,
0188                                  bool ContainsUnexpandedPack);
0189 ExprDependence computeDependence(DesignatedInitExpr *E);
0190 ExprDependence computeDependence(ParenListExpr *E);
0191 ExprDependence computeDependence(PseudoObjectExpr *E);
0192 ExprDependence computeDependence(AtomicExpr *E);
0193 
0194 ExprDependence computeDependence(ArraySectionExpr *E);
0195 ExprDependence computeDependence(OMPArrayShapingExpr *E);
0196 ExprDependence computeDependence(OMPIteratorExpr *E);
0197 
0198 ExprDependence computeDependence(ObjCArrayLiteral *E);
0199 ExprDependence computeDependence(ObjCDictionaryLiteral *E);
0200 ExprDependence computeDependence(ObjCBoxedExpr *E);
0201 ExprDependence computeDependence(ObjCEncodeExpr *E);
0202 ExprDependence computeDependence(ObjCIvarRefExpr *E);
0203 ExprDependence computeDependence(ObjCPropertyRefExpr *E);
0204 ExprDependence computeDependence(ObjCSubscriptRefExpr *E);
0205 ExprDependence computeDependence(ObjCIsaExpr *E);
0206 ExprDependence computeDependence(ObjCIndirectCopyRestoreExpr *E);
0207 ExprDependence computeDependence(ObjCMessageExpr *E);
0208 ExprDependence computeDependence(OpenACCAsteriskSizeExpr *E);
0209 
0210 } // namespace clang
0211 #endif