| 
|   | BuiltinBitCastExpr (QualType T, ExprValueKind VK, CastKind CK, Expr *SrcExpr, TypeSourceInfo *DstType, SourceLocation KWLoc, SourceLocation RParenLoc) | 
|   | BuiltinBitCastExpr (EmptyShell Empty) | 
| SourceLocation  | getBeginLoc () const LLVM_READONLY | 
| SourceLocation  | getEndLoc () const LLVM_READONLY | 
| TypeSourceInfo *  | getTypeInfoAsWritten () const | 
|   | getTypeInfoAsWritten - Returns the type source info for the type that this expression is casting to.  
  | 
| void  | setTypeInfoAsWritten (TypeSourceInfo *writtenTy) | 
| QualType  | getTypeAsWritten () const | 
|   | getTypeAsWritten - Returns the type that this expression is casting to, as written in the source code.  
  | 
| CastKind  | getCastKind () const | 
| void  | setCastKind (CastKind K) | 
| const char *  | getCastKindName () const | 
| Expr *  | getSubExpr () | 
| const Expr *  | getSubExpr () const | 
| void  | setSubExpr (Expr *E) | 
| Expr *  | getSubExprAsWritten () | 
|   | Retrieve the cast subexpression as it was written in the source code, looking through any implicit casts or other intermediate nodes introduced by semantic analysis.  
  | 
| const Expr *  | getSubExprAsWritten () const | 
| NamedDecl *  | getConversionFunction () const | 
|   | If this cast applies a user-defined conversion, retrieve the conversion function that it invokes.  
  | 
| bool  | path_empty () const | 
| unsigned  | path_size () const | 
| path_iterator  | path_begin () | 
| path_iterator  | path_end () | 
| path_const_iterator  | path_begin () const | 
| path_const_iterator  | path_end () const | 
| llvm::iterator_range< path_iterator >  | path () | 
|   | Path through the class hierarchy taken by casts between base and derived classes (see implementation of CastConsistency() for a full list of cast kinds that have a path).  
  | 
| llvm::iterator_range< path_const_iterator >  | path () const | 
| const FieldDecl *  | getTargetUnionField () const | 
| bool  | hasStoredFPFeatures () const | 
| FPOptionsOverride  | getStoredFPFeatures () const | 
|   | Get FPOptionsOverride from trailing storage.  
  | 
| FPOptionsOverride  | getStoredFPFeaturesOrDefault () const | 
|   | Get the store FPOptionsOverride or default if not stored.  
  | 
| FPOptions  | getFPFeaturesInEffect (const LangOptions &LO) const | 
|   | Get the FP features status of this operation.  
  | 
| FPOptionsOverride  | getFPFeatures () const | 
| bool  | changesVolatileQualification () const | 
|   | Return.  
  | 
| child_range  | children () | 
| const_child_range  | children () const | 
|   | Expr ()=delete | 
|   | Expr (const Expr &)=delete | 
|   | Expr (Expr &&)=delete | 
| Expr &  | operator= (const Expr &)=delete | 
| Expr &  | operator= (Expr &&)=delete | 
| QualType  | getType () const | 
| void  | setType (QualType t) | 
| QualType  | getEnumCoercedType (const ASTContext &Ctx) const | 
|   | If this expression is an enumeration constant, return the enumeration type under which said constant was declared.  
  | 
| ExprDependence  | getDependence () const | 
| bool  | isValueDependent () const | 
|   | Determines whether the value of this expression depends on.  
  | 
| bool  | isTypeDependent () const | 
|   | Determines whether the type of this expression depends on.  
  | 
| bool  | isInstantiationDependent () const | 
|   | Whether this expression is instantiation-dependent, meaning that it depends in some way on.  
  | 
| bool  | containsUnexpandedParameterPack () const | 
|   | Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates).  
  | 
| bool  | containsErrors () const | 
|   | Whether this expression contains subexpressions which had errors.  
  | 
| SourceLocation  | getExprLoc () const LLVM_READONLY | 
|   | getExprLoc - Return the preferred location for the arrow when diagnosing a problem with a generic expression.  
  | 
| bool  | isReadIfDiscardedInCPlusPlus11 () const | 
|   | Determine whether an lvalue-to-rvalue conversion should implicitly be applied to this expression if it appears as a discarded-value expression in C++11 onwards.  
  | 
| bool  | isUnusedResultAWarning (const Expr *&WarnExpr, SourceLocation &Loc, SourceRange &R1, SourceRange &R2, ASTContext &Ctx) const | 
|   | isUnusedResultAWarning - Return true if this immediate expression should be warned about if the result is unused.  
  | 
| bool  | isLValue () const | 
|   | isLValue - True if this expression is an "l-value" according to the rules of the current language.  
  | 
| bool  | isPRValue () const | 
| bool  | isXValue () const | 
| bool  | isGLValue () const | 
| LValueClassification  | ClassifyLValue (ASTContext &Ctx) const | 
|   | Reasons why an expression might not be an l-value.  
  | 
| isModifiableLvalueResult  | isModifiableLvalue (ASTContext &Ctx, SourceLocation *Loc=nullptr) const | 
|   | isModifiableLvalue - C99 6.3.2.1: an lvalue that does not have array type, does not have an incomplete type, does not have a const-qualified type, and if it is a structure or union, does not have any member (including, recursively, any member or element of all contained aggregates or unions) with a const-qualified type.  
  | 
| Classification  | Classify (ASTContext &Ctx) const | 
|   | Classify - Classify this expression according to the C++11 expression taxonomy.  
  | 
| Classification  | ClassifyModifiable (ASTContext &Ctx, SourceLocation &Loc) const | 
|   | ClassifyModifiable - Classify this expression according to the C++11 expression taxonomy, and see if it is valid on the left side of an assignment.  
  | 
| FPOptions  | getFPFeaturesInEffect (const LangOptions &LO) const | 
|   | Returns the set of floating point options that apply to this expression.  
  | 
| ExprValueKind  | getValueKind () const | 
|   | getValueKind - The value kind that this expression produces.  
  | 
| ExprObjectKind  | getObjectKind () const | 
|   | getObjectKind - The object kind that this expression produces.  
  | 
| bool  | isOrdinaryOrBitFieldObject () const | 
| void  | setValueKind (ExprValueKind Cat) | 
|   | setValueKind - Set the value kind produced by this expression.  
  | 
| void  | setObjectKind (ExprObjectKind Cat) | 
|   | setObjectKind - Set the object kind produced by this expression.  
  | 
| bool  | refersToBitField () const | 
|   | Returns true if this expression is a gl-value that potentially refers to a bit-field.  
  | 
| FieldDecl *  | getSourceBitField () | 
|   | If this expression refers to a bit-field, retrieve the declaration of that bit-field.  
  | 
| EnumConstantDecl *  | getEnumConstantDecl () | 
|   | If this expression refers to an enum constant, retrieve its declaration.  
  | 
| const EnumConstantDecl *  | getEnumConstantDecl () const | 
| const FieldDecl *  | getSourceBitField () const | 
| Decl *  | getReferencedDeclOfCallee () | 
| const Decl *  | getReferencedDeclOfCallee () const | 
| const ObjCPropertyRefExpr *  | getObjCProperty () const | 
|   | If this expression is an l-value for an Objective C property, find the underlying property reference expression.  
  | 
| bool  | isObjCSelfExpr () const | 
|   | Check if this expression is the ObjC 'self' implicit parameter.  
  | 
| bool  | refersToVectorElement () const | 
|   | Returns whether this expression refers to a vector element.  
  | 
| bool  | refersToMatrixElement () const | 
|   | Returns whether this expression refers to a matrix element.  
  | 
| bool  | refersToGlobalRegisterVar () const | 
|   | Returns whether this expression refers to a global register variable.  
  | 
| bool  | hasPlaceholderType () const | 
|   | Returns whether this expression has a placeholder type.  
  | 
| bool  | hasPlaceholderType (BuiltinType::Kind K) const | 
|   | Returns whether this expression has a specific placeholder type.  
  | 
| bool  | isKnownToHaveBooleanValue (bool Semantic=true) const | 
|   | isKnownToHaveBooleanValue - Return true if this is an integer expression that is known to return 0 or 1.  
  | 
| bool  | isFlexibleArrayMemberLike (const ASTContext &Context, LangOptions::StrictFlexArraysLevelKind StrictFlexArraysLevel, bool IgnoreTemplateOrMacroSubstitution=false) const | 
|   | Check whether this array fits the idiom of a flexible array member, depending on the value of -fstrict-flex-array.  
  | 
| std::optional< llvm::APSInt >  | getIntegerConstantExpr (const ASTContext &Ctx) const | 
|   | isIntegerConstantExpr - Return the value if this expression is a valid integer constant expression.  
  | 
| bool  | isIntegerConstantExpr (const ASTContext &Ctx) const | 
| bool  | isCXX98IntegralConstantExpr (const ASTContext &Ctx) const | 
|   | isCXX98IntegralConstantExpr - Return true if this expression is an integral constant expression in C++98.  
  | 
| bool  | isCXX11ConstantExpr (const ASTContext &Ctx, APValue *Result=nullptr) const | 
|   | isCXX11ConstantExpr - Return true if this expression is a constant expression in C++11.  
  | 
| bool  | isConstantInitializer (ASTContext &Ctx, bool ForRef, const Expr **Culprit=nullptr) const | 
|   | isConstantInitializer - Returns true if this expression can be emitted to IR as a constant, and thus can be used as a constant initializer in C.  
  | 
| const ValueDecl *  | getAsBuiltinConstantDeclRef (const ASTContext &Context) const | 
|   | If this expression is an unambiguous reference to a single declaration, in the style of __builtin_function_start, return that declaration.  
  | 
| bool  | EvaluateAsRValue (EvalResult &Result, const ASTContext &Ctx, bool InConstantContext=false) const | 
|   | EvaluateAsRValue - Return true if this is a constant which we can fold to an rvalue using any crazy technique (that has nothing to do with language standards) that we want to, even if the expression has side-effects.  
  | 
| bool  | EvaluateAsBooleanCondition (bool &Result, const ASTContext &Ctx, bool InConstantContext=false) const | 
|   | EvaluateAsBooleanCondition - Return true if this is a constant which we can fold and convert to a boolean condition using any crazy technique that we want to, even if the expression has side-effects.  
  | 
| bool  | EvaluateAsInt (EvalResult &Result, const ASTContext &Ctx, SideEffectsKind AllowSideEffects=SE_NoSideEffects, bool InConstantContext=false) const | 
|   | EvaluateAsInt - Return true if this is a constant which we can fold and convert to an integer, using any crazy technique that we want to.  
  | 
| bool  | EvaluateAsFloat (llvm::APFloat &Result, const ASTContext &Ctx, SideEffectsKind AllowSideEffects=SE_NoSideEffects, bool InConstantContext=false) const | 
|   | EvaluateAsFloat - Return true if this is a constant which we can fold and convert to a floating point value, using any crazy technique that we want to.  
  | 
| bool  | EvaluateAsFixedPoint (EvalResult &Result, const ASTContext &Ctx, SideEffectsKind AllowSideEffects=SE_NoSideEffects, bool InConstantContext=false) const | 
|   | EvaluateAsFixedPoint - Return true if this is a constant which we can fold and convert to a fixed point value.  
  | 
| bool  | isEvaluatable (const ASTContext &Ctx, SideEffectsKind AllowSideEffects=SE_NoSideEffects) const | 
|   | isEvaluatable - Call EvaluateAsRValue to see if this expression can be constant folded without side-effects, but discard the result.  
  | 
| bool  | HasSideEffects (const ASTContext &Ctx, bool IncludePossibleEffects=true) const | 
|   | HasSideEffects - This routine returns true for all those expressions which have any effect other than producing a value.  
  | 
| bool  | hasNonTrivialCall (const ASTContext &Ctx) const | 
|   | Determine whether this expression involves a call to any function that is not trivial.  
  | 
| llvm::APSInt  | EvaluateKnownConstInt (const ASTContext &Ctx) const | 
|   | EvaluateKnownConstInt - Call EvaluateAsRValue and return the folded integer.  
  | 
| llvm::APSInt  | EvaluateKnownConstIntCheckOverflow (const ASTContext &Ctx, SmallVectorImpl< PartialDiagnosticAt > *Diag=nullptr) const | 
| void  | EvaluateForOverflow (const ASTContext &Ctx) const | 
| bool  | EvaluateAsLValue (EvalResult &Result, const ASTContext &Ctx, bool InConstantContext=false) const | 
|   | EvaluateAsLValue - Evaluate an expression to see if we can fold it to an lvalue with link time known address, with no side-effects.  
  | 
| bool  | EvaluateAsInitializer (APValue &Result, const ASTContext &Ctx, const VarDecl *VD, SmallVectorImpl< PartialDiagnosticAt > &Notes, bool IsConstantInitializer) const | 
|   | EvaluateAsInitializer - Evaluate an expression as if it were the initializer of the given declaration.  
  | 
| bool  | EvaluateWithSubstitution (APValue &Value, ASTContext &Ctx, const FunctionDecl *Callee, ArrayRef< const Expr * > Args, const Expr *This=nullptr) const | 
|   | EvaluateWithSubstitution - Evaluate an expression as if from the context of a call to the given function with the given arguments, inside an unevaluated context.  
  | 
| bool  | EvaluateAsConstantExpr (EvalResult &Result, const ASTContext &Ctx, ConstantExprKind Kind=ConstantExprKind::Normal) const | 
|   | Evaluate an expression that is required to be a constant expression.  
  | 
| bool  | tryEvaluateObjectSize (uint64_t &Result, ASTContext &Ctx, unsigned Type) const | 
|   | If the current Expr is a pointer, this will try to statically determine the number of bytes available where the pointer is pointing.  
  | 
| bool  | tryEvaluateStrLen (uint64_t &Result, ASTContext &Ctx) const | 
|   | If the current Expr is a pointer, this will try to statically determine the strlen of the string pointed to.  
  | 
| bool  | EvaluateCharRangeAsString (std::string &Result, const Expr *SizeExpression, const Expr *PtrExpression, ASTContext &Ctx, EvalResult &Status) const | 
| bool  | EvaluateCharRangeAsString (APValue &Result, const Expr *SizeExpression, const Expr *PtrExpression, ASTContext &Ctx, EvalResult &Status) const | 
| std::optional< std::string >  | tryEvaluateString (ASTContext &Ctx) const | 
|   | If the current Expr can be evaluated to a pointer to a null-terminated constant string, return the constant string (without the terminating null).  
  | 
| NullPointerConstantKind  | isNullPointerConstant (ASTContext &Ctx, NullPointerConstantValueDependence NPC) const | 
|   | isNullPointerConstant - C99 6.3.2.3p3 - Test if this reduces down to a Null pointer constant.  
  | 
| bool  | isOBJCGCCandidate (ASTContext &Ctx) const | 
|   | isOBJCGCCandidate - Return true if this expression may be used in a read/ write barrier.  
  | 
| bool  | isBoundMemberFunction (ASTContext &Ctx) const | 
|   | Returns true if this expression is a bound member function.  
  | 
| Expr *  | IgnoreUnlessSpelledInSource () | 
|   | Skip past any invisible AST nodes which might surround this statement, such as ExprWithCleanups or ImplicitCastExpr nodes, but also injected CXXMemberExpr and CXXConstructExpr which represent implicit conversions.  
  | 
| const Expr *  | IgnoreUnlessSpelledInSource () const | 
| Expr *  | IgnoreImpCasts () LLVM_READONLY | 
|   | Skip past any implicit casts which might surround this expression until reaching a fixed point.  
  | 
| const Expr *  | IgnoreImpCasts () const | 
| Expr *  | IgnoreCasts () LLVM_READONLY | 
|   | Skip past any casts which might surround this expression until reaching a fixed point.  
  | 
| const Expr *  | IgnoreCasts () const | 
| Expr *  | IgnoreImplicit () LLVM_READONLY | 
|   | Skip past any implicit AST nodes which might surround this expression until reaching a fixed point.  
  | 
| const Expr *  | IgnoreImplicit () const | 
| Expr *  | IgnoreImplicitAsWritten () LLVM_READONLY | 
|   | Skip past any implicit AST nodes which might surround this expression until reaching a fixed point.  
  | 
| const Expr *  | IgnoreImplicitAsWritten () const | 
| Expr *  | IgnoreParens () LLVM_READONLY | 
|   | Skip past any parentheses which might surround this expression until reaching a fixed point.  
  | 
| const Expr *  | IgnoreParens () const | 
| Expr *  | IgnoreParenImpCasts () LLVM_READONLY | 
|   | Skip past any parentheses and implicit casts which might surround this expression until reaching a fixed point.  
  | 
| const Expr *  | IgnoreParenImpCasts () const | 
| Expr *  | IgnoreParenCasts () LLVM_READONLY | 
|   | Skip past any parentheses and casts which might surround this expression until reaching a fixed point.  
  | 
| const Expr *  | IgnoreParenCasts () const | 
| Expr *  | IgnoreConversionOperatorSingleStep () LLVM_READONLY | 
|   | Skip conversion operators.  
  | 
| const Expr *  | IgnoreConversionOperatorSingleStep () const | 
| Expr *  | IgnoreParenLValueCasts () LLVM_READONLY | 
|   | Skip past any parentheses and lvalue casts which might surround this expression until reaching a fixed point.  
  | 
| const Expr *  | IgnoreParenLValueCasts () const | 
| Expr *  | IgnoreParenNoopCasts (const ASTContext &Ctx) LLVM_READONLY | 
|   | Skip past any parentheses and casts which do not change the value (including ptr->int casts of the same size) until reaching a fixed point.  
  | 
| const Expr *  | IgnoreParenNoopCasts (const ASTContext &Ctx) const | 
| Expr *  | IgnoreParenBaseCasts () LLVM_READONLY | 
|   | Skip past any parentheses and derived-to-base casts until reaching a fixed point.  
  | 
| const Expr *  | IgnoreParenBaseCasts () const | 
| bool  | isDefaultArgument () const | 
|   | Determine whether this expression is a default function argument.  
  | 
| bool  | isTemporaryObject (ASTContext &Ctx, const CXXRecordDecl *TempTy) const | 
|   | Determine whether the result of this expression is a temporary object of the given class type.  
  | 
| bool  | isImplicitCXXThis () const | 
|   | Whether this expression is an implicit reference to 'this' in C++.  
  | 
| const CXXRecordDecl *  | getBestDynamicClassType () const | 
|   | For an expression of class type or pointer to class type, return the most derived class decl the expression is known to refer to.  
  | 
| const Expr *  | getBestDynamicClassTypeExpr () const | 
|   | Get the inner expression that determines the best dynamic class.  
  | 
| const Expr *  | skipRValueSubobjectAdjustments (SmallVectorImpl< const Expr * > &CommaLHS, SmallVectorImpl< SubobjectAdjustment > &Adjustments) const | 
|   | Walk outwards from an expression we want to bind a reference to and find the expression whose lifetime needs to be extended.  
  | 
| const Expr *  | skipRValueSubobjectAdjustments () const | 
| const Expr *  | getExprStmt () const | 
| Expr *  | getExprStmt () | 
| void *  | operator new (size_t bytes, const ASTContext &C, unsigned alignment=8) | 
| void *  | operator new (size_t bytes, const ASTContext *C, unsigned alignment=8) | 
| void *  | operator new (size_t bytes, void *mem) noexcept | 
| void  | operator delete (void *, const ASTContext &, unsigned) noexcept | 
| void  | operator delete (void *, const ASTContext *, unsigned) noexcept | 
| void  | operator delete (void *, size_t) noexcept | 
| void  | operator delete (void *, void *) noexcept | 
|   | Stmt ()=delete | 
|   | Stmt (const Stmt &)=delete | 
|   | Stmt (Stmt &&)=delete | 
| Stmt &  | operator= (const Stmt &)=delete | 
| Stmt &  | operator= (Stmt &&)=delete | 
|   | Stmt (StmtClass SC) | 
| StmtClass  | getStmtClass () const | 
| const char *  | getStmtClassName () const | 
| SourceRange  | getSourceRange () const LLVM_READONLY | 
|   | SourceLocation tokens are not useful in isolation - they are low level value objects created/interpreted by SourceManager.  
  | 
| SourceLocation  | getBeginLoc () const LLVM_READONLY | 
| SourceLocation  | getEndLoc () const LLVM_READONLY | 
| void  | dump () const | 
|   | Dumps the specified AST fragment and all subtrees to llvm::errs().  
  | 
| void  | dump (raw_ostream &OS, const ASTContext &Context) const | 
| int64_t  | getID (const ASTContext &Context) const | 
| void  | dumpColor () const | 
|   | dumpColor - same as dump(), but forces color highlighting.  
  | 
| void  | dumpPretty (const ASTContext &Context) const | 
|   | dumpPretty/printPretty - These two methods do a "pretty print" of the AST back to its original source language syntax.  
  | 
| void  | printPretty (raw_ostream &OS, PrinterHelper *Helper, const PrintingPolicy &Policy, unsigned Indentation=0, StringRef NewlineSymbol="\n", const ASTContext *Context=nullptr) const | 
| void  | printPrettyControlled (raw_ostream &OS, PrinterHelper *Helper, const PrintingPolicy &Policy, unsigned Indentation=0, StringRef NewlineSymbol="\n", const ASTContext *Context=nullptr) const | 
| void  | printJson (raw_ostream &Out, PrinterHelper *Helper, const PrintingPolicy &Policy, bool AddQuotes) const | 
|   | Pretty-prints in JSON format.  
  | 
| void  | viewAST () const | 
|   | viewAST - Visualize an AST rooted at this Stmt* using GraphViz.  
  | 
| Stmt *  | IgnoreContainers (bool IgnoreCaptured=false) | 
|   | Skip no-op (attributed, compound) container stmts and skip captured stmt at the top, if IgnoreCaptured is true.  
  | 
| const Stmt *  | IgnoreContainers (bool IgnoreCaptured=false) const | 
| const Stmt *  | stripLabelLikeStatements () const | 
|   | Strip off all label-like statements.  
  | 
| Stmt *  | stripLabelLikeStatements () | 
| child_range  | children () | 
| const_child_range  | children () const | 
| child_iterator  | child_begin () | 
| child_iterator  | child_end () | 
| const_child_iterator  | child_begin () const | 
| const_child_iterator  | child_end () const | 
| void  | Profile (llvm::FoldingSetNodeID &ID, const ASTContext &Context, bool Canonical, bool ProfileLambdaExpr=false) const | 
|   | Produce a unique representation of the given statement.  
  | 
| void  | ProcessODRHash (llvm::FoldingSetNodeID &ID, ODRHash &Hash) const | 
|   | Calculate a unique representation for a statement that is stable across compiler invocations.  
  |