#include "clang/AST/Expr.h"
#include "clang/AST/APValue.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/ASTLambda.h"
#include "clang/AST/Attr.h"
#include "clang/AST/ComputeDependence.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/DependenceFlags.h"
#include "clang/AST/EvaluatedExprVisitor.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/IgnoreExpr.h"
#include "clang/AST/Mangle.h"
#include "clang/AST/RecordLayout.h"
#include "clang/AST/StmtVisitor.h"
#include "clang/Basic/Builtins.h"
#include "clang/Basic/CharInfo.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Lex/Lexer.h"
#include "clang/Lex/LiteralSupport.h"
#include "clang/Lex/Preprocessor.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cstring>
#include <optional>
usingnamespaceclang;
const Expr *Expr::getBestDynamicClassTypeExpr() const { … }
const CXXRecordDecl *Expr::getBestDynamicClassType() const { … }
const Expr *Expr::skipRValueSubobjectAdjustments(
SmallVectorImpl<const Expr *> &CommaLHSs,
SmallVectorImpl<SubobjectAdjustment> &Adjustments) const { … }
bool Expr::isKnownToHaveBooleanValue(bool Semantic) const { … }
bool Expr::isFlexibleArrayMemberLike(
ASTContext &Ctx,
LangOptions::StrictFlexArraysLevelKind StrictFlexArraysLevel,
bool IgnoreTemplateOrMacroSubstitution) const { … }
const ValueDecl *
Expr::getAsBuiltinConstantDeclRef(const ASTContext &Context) const { … }
namespace {
template <class E, class T>
SourceLocation getExprLocImpl(const Expr *expr,
SourceLocation (T::*v)() const) { … }
template <class E>
SourceLocation getExprLocImpl(const Expr *expr,
SourceLocation (Expr::*v)() const) { … }
}
QualType Expr::getEnumCoercedType(const ASTContext &Ctx) const { … }
SourceLocation Expr::getExprLoc() const { … }
static void AssertResultStorageKind(ConstantResultStorageKind Kind) { … }
ConstantResultStorageKind ConstantExpr::getStorageKind(const APValue &Value) { … }
ConstantResultStorageKind
ConstantExpr::getStorageKind(const Type *T, const ASTContext &Context) { … }
ConstantExpr::ConstantExpr(Expr *SubExpr, ConstantResultStorageKind StorageKind,
bool IsImmediateInvocation)
: … { … }
ConstantExpr *ConstantExpr::Create(const ASTContext &Context, Expr *E,
ConstantResultStorageKind StorageKind,
bool IsImmediateInvocation) { … }
ConstantExpr *ConstantExpr::Create(const ASTContext &Context, Expr *E,
const APValue &Result) { … }
ConstantExpr::ConstantExpr(EmptyShell Empty,
ConstantResultStorageKind StorageKind)
: … { … }
ConstantExpr *ConstantExpr::CreateEmpty(const ASTContext &Context,
ConstantResultStorageKind StorageKind) { … }
void ConstantExpr::MoveIntoResult(APValue &Value, const ASTContext &Context) { … }
llvm::APSInt ConstantExpr::getResultAsAPSInt() const { … }
APValue ConstantExpr::getAPValueResult() const { … }
DeclRefExpr::DeclRefExpr(const ASTContext &Ctx, ValueDecl *D,
bool RefersToEnclosingVariableOrCapture, QualType T,
ExprValueKind VK, SourceLocation L,
const DeclarationNameLoc &LocInfo,
NonOdrUseReason NOUR)
: … { … }
DeclRefExpr::DeclRefExpr(const ASTContext &Ctx,
NestedNameSpecifierLoc QualifierLoc,
SourceLocation TemplateKWLoc, ValueDecl *D,
bool RefersToEnclosingVariableOrCapture,
const DeclarationNameInfo &NameInfo, NamedDecl *FoundD,
const TemplateArgumentListInfo *TemplateArgs,
QualType T, ExprValueKind VK, NonOdrUseReason NOUR)
: … { … }
DeclRefExpr *DeclRefExpr::Create(const ASTContext &Context,
NestedNameSpecifierLoc QualifierLoc,
SourceLocation TemplateKWLoc, ValueDecl *D,
bool RefersToEnclosingVariableOrCapture,
SourceLocation NameLoc, QualType T,
ExprValueKind VK, NamedDecl *FoundD,
const TemplateArgumentListInfo *TemplateArgs,
NonOdrUseReason NOUR) { … }
DeclRefExpr *DeclRefExpr::Create(const ASTContext &Context,
NestedNameSpecifierLoc QualifierLoc,
SourceLocation TemplateKWLoc, ValueDecl *D,
bool RefersToEnclosingVariableOrCapture,
const DeclarationNameInfo &NameInfo,
QualType T, ExprValueKind VK,
NamedDecl *FoundD,
const TemplateArgumentListInfo *TemplateArgs,
NonOdrUseReason NOUR) { … }
DeclRefExpr *DeclRefExpr::CreateEmpty(const ASTContext &Context,
bool HasQualifier,
bool HasFoundDecl,
bool HasTemplateKWAndArgsInfo,
unsigned NumTemplateArgs) { … }
void DeclRefExpr::setDecl(ValueDecl *NewD) { … }
SourceLocation DeclRefExpr::getBeginLoc() const { … }
SourceLocation DeclRefExpr::getEndLoc() const { … }
SYCLUniqueStableNameExpr::SYCLUniqueStableNameExpr(SourceLocation OpLoc,
SourceLocation LParen,
SourceLocation RParen,
QualType ResultTy,
TypeSourceInfo *TSI)
: … { … }
SYCLUniqueStableNameExpr::SYCLUniqueStableNameExpr(EmptyShell Empty,
QualType ResultTy)
: … { … }
SYCLUniqueStableNameExpr *
SYCLUniqueStableNameExpr::Create(const ASTContext &Ctx, SourceLocation OpLoc,
SourceLocation LParen, SourceLocation RParen,
TypeSourceInfo *TSI) { … }
SYCLUniqueStableNameExpr *
SYCLUniqueStableNameExpr::CreateEmpty(const ASTContext &Ctx) { … }
std::string SYCLUniqueStableNameExpr::ComputeName(ASTContext &Context) const { … }
std::string SYCLUniqueStableNameExpr::ComputeName(ASTContext &Context,
QualType Ty) { … }
PredefinedExpr::PredefinedExpr(SourceLocation L, QualType FNTy,
PredefinedIdentKind IK, bool IsTransparent,
StringLiteral *SL)
: … { … }
PredefinedExpr::PredefinedExpr(EmptyShell Empty, bool HasFunctionName)
: … { … }
PredefinedExpr *PredefinedExpr::Create(const ASTContext &Ctx, SourceLocation L,
QualType FNTy, PredefinedIdentKind IK,
bool IsTransparent, StringLiteral *SL) { … }
PredefinedExpr *PredefinedExpr::CreateEmpty(const ASTContext &Ctx,
bool HasFunctionName) { … }
StringRef PredefinedExpr::getIdentKindName(PredefinedIdentKind IK) { … }
std::string PredefinedExpr::ComputeName(PredefinedIdentKind IK,
const Decl *CurrentDecl,
bool ForceElaboratedPrinting) { … }
void APNumericStorage::setIntValue(const ASTContext &C,
const llvm::APInt &Val) { … }
IntegerLiteral::IntegerLiteral(const ASTContext &C, const llvm::APInt &V,
QualType type, SourceLocation l)
: … { … }
IntegerLiteral *
IntegerLiteral::Create(const ASTContext &C, const llvm::APInt &V,
QualType type, SourceLocation l) { … }
IntegerLiteral *
IntegerLiteral::Create(const ASTContext &C, EmptyShell Empty) { … }
FixedPointLiteral::FixedPointLiteral(const ASTContext &C, const llvm::APInt &V,
QualType type, SourceLocation l,
unsigned Scale)
: … { … }
FixedPointLiteral *FixedPointLiteral::CreateFromRawInt(const ASTContext &C,
const llvm::APInt &V,
QualType type,
SourceLocation l,
unsigned Scale) { … }
FixedPointLiteral *FixedPointLiteral::Create(const ASTContext &C,
EmptyShell Empty) { … }
std::string FixedPointLiteral::getValueAsString(unsigned Radix) const { … }
void CharacterLiteral::print(unsigned Val, CharacterLiteralKind Kind,
raw_ostream &OS) { … }
FloatingLiteral::FloatingLiteral(const ASTContext &C, const llvm::APFloat &V,
bool isexact, QualType Type, SourceLocation L)
: … { … }
FloatingLiteral::FloatingLiteral(const ASTContext &C, EmptyShell Empty)
: … { … }
FloatingLiteral *
FloatingLiteral::Create(const ASTContext &C, const llvm::APFloat &V,
bool isexact, QualType Type, SourceLocation L) { … }
FloatingLiteral *
FloatingLiteral::Create(const ASTContext &C, EmptyShell Empty) { … }
double FloatingLiteral::getValueAsApproximateDouble() const { … }
unsigned StringLiteral::mapCharByteWidth(TargetInfo const &Target,
StringLiteralKind SK) { … }
StringLiteral::StringLiteral(const ASTContext &Ctx, StringRef Str,
StringLiteralKind Kind, bool Pascal, QualType Ty,
const SourceLocation *Loc,
unsigned NumConcatenated)
: … { … }
StringLiteral::StringLiteral(EmptyShell Empty, unsigned NumConcatenated,
unsigned Length, unsigned CharByteWidth)
: … { … }
StringLiteral *StringLiteral::Create(const ASTContext &Ctx, StringRef Str,
StringLiteralKind Kind, bool Pascal,
QualType Ty, const SourceLocation *Loc,
unsigned NumConcatenated) { … }
StringLiteral *StringLiteral::CreateEmpty(const ASTContext &Ctx,
unsigned NumConcatenated,
unsigned Length,
unsigned CharByteWidth) { … }
void StringLiteral::outputString(raw_ostream &OS) const { … }
SourceLocation
StringLiteral::getLocationOfByte(unsigned ByteNo, const SourceManager &SM,
const LangOptions &Features,
const TargetInfo &Target, unsigned *StartToken,
unsigned *StartTokenByteOffset) const { … }
StringRef UnaryOperator::getOpcodeStr(Opcode Op) { … }
UnaryOperatorKind
UnaryOperator::getOverloadedOpcode(OverloadedOperatorKind OO, bool Postfix) { … }
OverloadedOperatorKind UnaryOperator::getOverloadedOperator(Opcode Opc) { … }
CallExpr::CallExpr(StmtClass SC, Expr *Fn, ArrayRef<Expr *> PreArgs,
ArrayRef<Expr *> Args, QualType Ty, ExprValueKind VK,
SourceLocation RParenLoc, FPOptionsOverride FPFeatures,
unsigned MinNumArgs, ADLCallKind UsesADL)
: … { … }
CallExpr::CallExpr(StmtClass SC, unsigned NumPreArgs, unsigned NumArgs,
bool HasFPFeatures, EmptyShell Empty)
: … { … }
CallExpr *CallExpr::Create(const ASTContext &Ctx, Expr *Fn,
ArrayRef<Expr *> Args, QualType Ty, ExprValueKind VK,
SourceLocation RParenLoc,
FPOptionsOverride FPFeatures, unsigned MinNumArgs,
ADLCallKind UsesADL) { … }
CallExpr *CallExpr::CreateTemporary(void *Mem, Expr *Fn, QualType Ty,
ExprValueKind VK, SourceLocation RParenLoc,
ADLCallKind UsesADL) { … }
CallExpr *CallExpr::CreateEmpty(const ASTContext &Ctx, unsigned NumArgs,
bool HasFPFeatures, EmptyShell Empty) { … }
unsigned CallExpr::offsetToTrailingObjects(StmtClass SC) { … }
Decl *Expr::getReferencedDeclOfCallee() { … }
unsigned CallExpr::getBuiltinCallee() const { … }
bool CallExpr::isUnevaluatedBuiltinCall(const ASTContext &Ctx) const { … }
QualType CallExpr::getCallReturnType(const ASTContext &Ctx) const { … }
const Attr *CallExpr::getUnusedResultAttr(const ASTContext &Ctx) const { … }
SourceLocation CallExpr::getBeginLoc() const { … }
SourceLocation CallExpr::getEndLoc() const { … }
OffsetOfExpr *OffsetOfExpr::Create(const ASTContext &C, QualType type,
SourceLocation OperatorLoc,
TypeSourceInfo *tsi,
ArrayRef<OffsetOfNode> comps,
ArrayRef<Expr*> exprs,
SourceLocation RParenLoc) { … }
OffsetOfExpr *OffsetOfExpr::CreateEmpty(const ASTContext &C,
unsigned numComps, unsigned numExprs) { … }
OffsetOfExpr::OffsetOfExpr(const ASTContext &C, QualType type,
SourceLocation OperatorLoc, TypeSourceInfo *tsi,
ArrayRef<OffsetOfNode> comps, ArrayRef<Expr *> exprs,
SourceLocation RParenLoc)
: … { … }
IdentifierInfo *OffsetOfNode::getFieldName() const { … }
UnaryExprOrTypeTraitExpr::UnaryExprOrTypeTraitExpr(
UnaryExprOrTypeTrait ExprKind, Expr *E, QualType resultType,
SourceLocation op, SourceLocation rp)
: … { … }
MemberExpr::MemberExpr(Expr *Base, bool IsArrow, SourceLocation OperatorLoc,
NestedNameSpecifierLoc QualifierLoc,
SourceLocation TemplateKWLoc, ValueDecl *MemberDecl,
DeclAccessPair FoundDecl,
const DeclarationNameInfo &NameInfo,
const TemplateArgumentListInfo *TemplateArgs, QualType T,
ExprValueKind VK, ExprObjectKind OK,
NonOdrUseReason NOUR)
: … { … }
MemberExpr *MemberExpr::Create(
const ASTContext &C, Expr *Base, bool IsArrow, SourceLocation OperatorLoc,
NestedNameSpecifierLoc QualifierLoc, SourceLocation TemplateKWLoc,
ValueDecl *MemberDecl, DeclAccessPair FoundDecl,
DeclarationNameInfo NameInfo, const TemplateArgumentListInfo *TemplateArgs,
QualType T, ExprValueKind VK, ExprObjectKind OK, NonOdrUseReason NOUR) { … }
MemberExpr *MemberExpr::CreateEmpty(const ASTContext &Context,
bool HasQualifier, bool HasFoundDecl,
bool HasTemplateKWAndArgsInfo,
unsigned NumTemplateArgs) { … }
void MemberExpr::setMemberDecl(ValueDecl *NewD) { … }
SourceLocation MemberExpr::getBeginLoc() const { … }
SourceLocation MemberExpr::getEndLoc() const { … }
bool CastExpr::CastConsistency() const { … }
const char *CastExpr::getCastKindName(CastKind CK) { … }
namespace {
static Expr *ignoreImplicitSemaNodes(Expr *E) { … }
}
Expr *CastExpr::getSubExprAsWritten() { … }
NamedDecl *CastExpr::getConversionFunction() const { … }
CXXBaseSpecifier **CastExpr::path_buffer() { … }
const FieldDecl *CastExpr::getTargetFieldForToUnionCast(QualType unionType,
QualType opType) { … }
const FieldDecl *CastExpr::getTargetFieldForToUnionCast(const RecordDecl *RD,
QualType OpType) { … }
FPOptionsOverride *CastExpr::getTrailingFPFeatures() { … }
ImplicitCastExpr *ImplicitCastExpr::Create(const ASTContext &C, QualType T,
CastKind Kind, Expr *Operand,
const CXXCastPath *BasePath,
ExprValueKind VK,
FPOptionsOverride FPO) { … }
ImplicitCastExpr *ImplicitCastExpr::CreateEmpty(const ASTContext &C,
unsigned PathSize,
bool HasFPFeatures) { … }
CStyleCastExpr *CStyleCastExpr::Create(const ASTContext &C, QualType T,
ExprValueKind VK, CastKind K, Expr *Op,
const CXXCastPath *BasePath,
FPOptionsOverride FPO,
TypeSourceInfo *WrittenTy,
SourceLocation L, SourceLocation R) { … }
CStyleCastExpr *CStyleCastExpr::CreateEmpty(const ASTContext &C,
unsigned PathSize,
bool HasFPFeatures) { … }
StringRef BinaryOperator::getOpcodeStr(Opcode Op) { … }
BinaryOperatorKind
BinaryOperator::getOverloadedOpcode(OverloadedOperatorKind OO) { … }
OverloadedOperatorKind BinaryOperator::getOverloadedOperator(Opcode Opc) { … }
bool BinaryOperator::isNullPointerArithmeticExtension(ASTContext &Ctx,
Opcode Opc,
const Expr *LHS,
const Expr *RHS) { … }
SourceLocExpr::SourceLocExpr(const ASTContext &Ctx, SourceLocIdentKind Kind,
QualType ResultTy, SourceLocation BLoc,
SourceLocation RParenLoc,
DeclContext *ParentContext)
: … { … }
StringRef SourceLocExpr::getBuiltinStr() const { … }
APValue SourceLocExpr::EvaluateInContext(const ASTContext &Ctx,
const Expr *DefaultExpr) const { … }
EmbedExpr::EmbedExpr(const ASTContext &Ctx, SourceLocation Loc,
EmbedDataStorage *Data, unsigned Begin,
unsigned NumOfElements)
: … { … }
InitListExpr::InitListExpr(const ASTContext &C, SourceLocation lbraceloc,
ArrayRef<Expr *> initExprs, SourceLocation rbraceloc)
: … { … }
void InitListExpr::reserveInits(const ASTContext &C, unsigned NumInits) { … }
void InitListExpr::resizeInits(const ASTContext &C, unsigned NumInits) { … }
Expr *InitListExpr::updateInit(const ASTContext &C, unsigned Init, Expr *expr) { … }
void InitListExpr::setArrayFiller(Expr *filler) { … }
bool InitListExpr::isStringLiteralInit() const { … }
bool InitListExpr::isTransparent() const { … }
bool InitListExpr::isIdiomaticZeroInitializer(const LangOptions &LangOpts) const { … }
SourceLocation InitListExpr::getBeginLoc() const { … }
SourceLocation InitListExpr::getEndLoc() const { … }
const FunctionProtoType *BlockExpr::getFunctionType() const { … }
SourceLocation BlockExpr::getCaretLocation() const { … }
const Stmt *BlockExpr::getBody() const { … }
Stmt *BlockExpr::getBody() { … }
bool Expr::isReadIfDiscardedInCPlusPlus11() const { … }
bool Expr::isUnusedResultAWarning(const Expr *&WarnE, SourceLocation &Loc,
SourceRange &R1, SourceRange &R2,
ASTContext &Ctx) const { … }
bool Expr::isOBJCGCCandidate(ASTContext &Ctx) const { … }
bool Expr::isBoundMemberFunction(ASTContext &Ctx) const { … }
QualType Expr::findBoundMemberType(const Expr *expr) { … }
Expr *Expr::IgnoreImpCasts() { … }
Expr *Expr::IgnoreCasts() { … }
Expr *Expr::IgnoreImplicit() { … }
Expr *Expr::IgnoreImplicitAsWritten() { … }
Expr *Expr::IgnoreParens() { … }
Expr *Expr::IgnoreParenImpCasts() { … }
Expr *Expr::IgnoreParenCasts() { … }
Expr *Expr::IgnoreConversionOperatorSingleStep() { … }
Expr *Expr::IgnoreParenLValueCasts() { … }
Expr *Expr::IgnoreParenBaseCasts() { … }
Expr *Expr::IgnoreParenNoopCasts(const ASTContext &Ctx) { … }
Expr *Expr::IgnoreUnlessSpelledInSource() { … }
bool Expr::isDefaultArgument() const { … }
static const Expr *skipTemporaryBindingsNoOpCastsAndParens(const Expr *E) { … }
bool Expr::isTemporaryObject(ASTContext &C, const CXXRecordDecl *TempTy) const { … }
bool Expr::isImplicitCXXThis() const { … }
bool Expr::hasAnyTypeDependentArguments(ArrayRef<Expr *> Exprs) { … }
bool Expr::isConstantInitializer(ASTContext &Ctx, bool IsForRef,
const Expr **Culprit) const { … }
bool CallExpr::isBuiltinAssumeFalse(const ASTContext &Ctx) const { … }
bool CallExpr::isCallToStdMove() const { … }
namespace {
class SideEffectFinder : public ConstEvaluatedExprVisitor<SideEffectFinder> { … };
}
bool Expr::HasSideEffects(const ASTContext &Ctx,
bool IncludePossibleEffects) const { … }
FPOptions Expr::getFPFeaturesInEffect(const LangOptions &LO) const { … }
namespace {
class NonTrivialCallFinder : public ConstEvaluatedExprVisitor<NonTrivialCallFinder>
{ … };
}
bool Expr::hasNonTrivialCall(const ASTContext &Ctx) const { … }
Expr::NullPointerConstantKind
Expr::isNullPointerConstant(ASTContext &Ctx,
NullPointerConstantValueDependence NPC) const { … }
const ObjCPropertyRefExpr *Expr::getObjCProperty() const { … }
bool Expr::isObjCSelfExpr() const { … }
FieldDecl *Expr::getSourceBitField() { … }
EnumConstantDecl *Expr::getEnumConstantDecl() { … }
bool Expr::refersToVectorElement() const { … }
bool Expr::refersToGlobalRegisterVar() const { … }
bool Expr::isSameComparisonOperand(const Expr* E1, const Expr* E2) { … }
bool ExtVectorElementExpr::isArrow() const { … }
unsigned ExtVectorElementExpr::getNumElements() const { … }
bool ExtVectorElementExpr::containsDuplicateElements() const { … }
void ExtVectorElementExpr::getEncodedElementAccess(
SmallVectorImpl<uint32_t> &Elts) const { … }
ShuffleVectorExpr::ShuffleVectorExpr(const ASTContext &C, ArrayRef<Expr *> args,
QualType Type, SourceLocation BLoc,
SourceLocation RP)
: … { … }
void ShuffleVectorExpr::setExprs(const ASTContext &C, ArrayRef<Expr *> Exprs) { … }
GenericSelectionExpr::GenericSelectionExpr(
const ASTContext &, SourceLocation GenericLoc, Expr *ControllingExpr,
ArrayRef<TypeSourceInfo *> AssocTypes, ArrayRef<Expr *> AssocExprs,
SourceLocation DefaultLoc, SourceLocation RParenLoc,
bool ContainsUnexpandedParameterPack, unsigned ResultIndex)
: … { … }
GenericSelectionExpr::GenericSelectionExpr(
const ASTContext &, SourceLocation GenericLoc,
TypeSourceInfo *ControllingType, ArrayRef<TypeSourceInfo *> AssocTypes,
ArrayRef<Expr *> AssocExprs, SourceLocation DefaultLoc,
SourceLocation RParenLoc, bool ContainsUnexpandedParameterPack,
unsigned ResultIndex)
: … { … }
GenericSelectionExpr::GenericSelectionExpr(
const ASTContext &Context, SourceLocation GenericLoc, Expr *ControllingExpr,
ArrayRef<TypeSourceInfo *> AssocTypes, ArrayRef<Expr *> AssocExprs,
SourceLocation DefaultLoc, SourceLocation RParenLoc,
bool ContainsUnexpandedParameterPack)
: … { … }
GenericSelectionExpr::GenericSelectionExpr(
const ASTContext &Context, SourceLocation GenericLoc,
TypeSourceInfo *ControllingType, ArrayRef<TypeSourceInfo *> AssocTypes,
ArrayRef<Expr *> AssocExprs, SourceLocation DefaultLoc,
SourceLocation RParenLoc, bool ContainsUnexpandedParameterPack)
: … { … }
GenericSelectionExpr::GenericSelectionExpr(EmptyShell Empty, unsigned NumAssocs)
: … { … }
GenericSelectionExpr *GenericSelectionExpr::Create(
const ASTContext &Context, SourceLocation GenericLoc, Expr *ControllingExpr,
ArrayRef<TypeSourceInfo *> AssocTypes, ArrayRef<Expr *> AssocExprs,
SourceLocation DefaultLoc, SourceLocation RParenLoc,
bool ContainsUnexpandedParameterPack, unsigned ResultIndex) { … }
GenericSelectionExpr *GenericSelectionExpr::Create(
const ASTContext &Context, SourceLocation GenericLoc, Expr *ControllingExpr,
ArrayRef<TypeSourceInfo *> AssocTypes, ArrayRef<Expr *> AssocExprs,
SourceLocation DefaultLoc, SourceLocation RParenLoc,
bool ContainsUnexpandedParameterPack) { … }
GenericSelectionExpr *GenericSelectionExpr::Create(
const ASTContext &Context, SourceLocation GenericLoc,
TypeSourceInfo *ControllingType, ArrayRef<TypeSourceInfo *> AssocTypes,
ArrayRef<Expr *> AssocExprs, SourceLocation DefaultLoc,
SourceLocation RParenLoc, bool ContainsUnexpandedParameterPack,
unsigned ResultIndex) { … }
GenericSelectionExpr *GenericSelectionExpr::Create(
const ASTContext &Context, SourceLocation GenericLoc,
TypeSourceInfo *ControllingType, ArrayRef<TypeSourceInfo *> AssocTypes,
ArrayRef<Expr *> AssocExprs, SourceLocation DefaultLoc,
SourceLocation RParenLoc, bool ContainsUnexpandedParameterPack) { … }
GenericSelectionExpr *
GenericSelectionExpr::CreateEmpty(const ASTContext &Context,
unsigned NumAssocs) { … }
const IdentifierInfo *DesignatedInitExpr::Designator::getFieldName() const { … }
DesignatedInitExpr::DesignatedInitExpr(const ASTContext &C, QualType Ty,
llvm::ArrayRef<Designator> Designators,
SourceLocation EqualOrColonLoc,
bool GNUSyntax,
ArrayRef<Expr *> IndexExprs, Expr *Init)
: … { … }
DesignatedInitExpr *
DesignatedInitExpr::Create(const ASTContext &C,
llvm::ArrayRef<Designator> Designators,
ArrayRef<Expr*> IndexExprs,
SourceLocation ColonOrEqualLoc,
bool UsesColonSyntax, Expr *Init) { … }
DesignatedInitExpr *DesignatedInitExpr::CreateEmpty(const ASTContext &C,
unsigned NumIndexExprs) { … }
void DesignatedInitExpr::setDesignators(const ASTContext &C,
const Designator *Desigs,
unsigned NumDesigs) { … }
SourceRange DesignatedInitExpr::getDesignatorsSourceRange() const { … }
SourceLocation DesignatedInitExpr::getBeginLoc() const { … }
SourceLocation DesignatedInitExpr::getEndLoc() const { … }
Expr *DesignatedInitExpr::getArrayIndex(const Designator& D) const { … }
Expr *DesignatedInitExpr::getArrayRangeStart(const Designator &D) const { … }
Expr *DesignatedInitExpr::getArrayRangeEnd(const Designator &D) const { … }
void DesignatedInitExpr::ExpandDesignator(const ASTContext &C, unsigned Idx,
const Designator *First,
const Designator *Last) { … }
DesignatedInitUpdateExpr::DesignatedInitUpdateExpr(const ASTContext &C,
SourceLocation lBraceLoc,
Expr *baseExpr,
SourceLocation rBraceLoc)
: … { … }
SourceLocation DesignatedInitUpdateExpr::getBeginLoc() const { … }
SourceLocation DesignatedInitUpdateExpr::getEndLoc() const { … }
ParenListExpr::ParenListExpr(SourceLocation LParenLoc, ArrayRef<Expr *> Exprs,
SourceLocation RParenLoc)
: … { … }
ParenListExpr::ParenListExpr(EmptyShell Empty, unsigned NumExprs)
: … { … }
ParenListExpr *ParenListExpr::Create(const ASTContext &Ctx,
SourceLocation LParenLoc,
ArrayRef<Expr *> Exprs,
SourceLocation RParenLoc) { … }
ParenListExpr *ParenListExpr::CreateEmpty(const ASTContext &Ctx,
unsigned NumExprs) { … }
static std::optional<BinaryOperator *>
getOverflowPatternBinOp(const BinaryOperator *E) { … }
static void computeOverflowPatternExclusion(const ASTContext &Ctx,
const BinaryOperator *E) { … }
BinaryOperator::BinaryOperator(const ASTContext &Ctx, Expr *lhs, Expr *rhs,
Opcode opc, QualType ResTy, ExprValueKind VK,
ExprObjectKind OK, SourceLocation opLoc,
FPOptionsOverride FPFeatures)
: … { … }
BinaryOperator::BinaryOperator(const ASTContext &Ctx, Expr *lhs, Expr *rhs,
Opcode opc, QualType ResTy, ExprValueKind VK,
ExprObjectKind OK, SourceLocation opLoc,
FPOptionsOverride FPFeatures, bool dead2)
: … { … }
BinaryOperator *BinaryOperator::CreateEmpty(const ASTContext &C,
bool HasFPFeatures) { … }
BinaryOperator *BinaryOperator::Create(const ASTContext &C, Expr *lhs,
Expr *rhs, Opcode opc, QualType ResTy,
ExprValueKind VK, ExprObjectKind OK,
SourceLocation opLoc,
FPOptionsOverride FPFeatures) { … }
CompoundAssignOperator *
CompoundAssignOperator::CreateEmpty(const ASTContext &C, bool HasFPFeatures) { … }
CompoundAssignOperator *
CompoundAssignOperator::Create(const ASTContext &C, Expr *lhs, Expr *rhs,
Opcode opc, QualType ResTy, ExprValueKind VK,
ExprObjectKind OK, SourceLocation opLoc,
FPOptionsOverride FPFeatures,
QualType CompLHSType, QualType CompResultType) { … }
UnaryOperator *UnaryOperator::CreateEmpty(const ASTContext &C,
bool hasFPFeatures) { … }
UnaryOperator::UnaryOperator(const ASTContext &Ctx, Expr *input, Opcode opc,
QualType type, ExprValueKind VK, ExprObjectKind OK,
SourceLocation l, bool CanOverflow,
FPOptionsOverride FPFeatures)
: … { … }
UnaryOperator *UnaryOperator::Create(const ASTContext &C, Expr *input,
Opcode opc, QualType type,
ExprValueKind VK, ExprObjectKind OK,
SourceLocation l, bool CanOverflow,
FPOptionsOverride FPFeatures) { … }
const OpaqueValueExpr *OpaqueValueExpr::findInCopyConstruct(const Expr *e) { … }
PseudoObjectExpr *PseudoObjectExpr::Create(const ASTContext &Context,
EmptyShell sh,
unsigned numSemanticExprs) { … }
PseudoObjectExpr::PseudoObjectExpr(EmptyShell shell, unsigned numSemanticExprs)
: … { … }
PseudoObjectExpr *PseudoObjectExpr::Create(const ASTContext &C, Expr *syntax,
ArrayRef<Expr*> semantics,
unsigned resultIndex) { … }
PseudoObjectExpr::PseudoObjectExpr(QualType type, ExprValueKind VK,
Expr *syntax, ArrayRef<Expr *> semantics,
unsigned resultIndex)
: … { … }
Stmt::child_range UnaryExprOrTypeTraitExpr::children() { … }
Stmt::const_child_range UnaryExprOrTypeTraitExpr::children() const { … }
AtomicExpr::AtomicExpr(SourceLocation BLoc, ArrayRef<Expr *> args, QualType t,
AtomicOp op, SourceLocation RP)
: … { … }
unsigned AtomicExpr::getNumSubExprs(AtomicOp Op) { … }
QualType AtomicExpr::getValueType() const { … }
QualType ArraySectionExpr::getBaseOriginalType(const Expr *Base) { … }
RecoveryExpr::RecoveryExpr(ASTContext &Ctx, QualType T, SourceLocation BeginLoc,
SourceLocation EndLoc, ArrayRef<Expr *> SubExprs)
: … { … }
RecoveryExpr *RecoveryExpr::Create(ASTContext &Ctx, QualType T,
SourceLocation BeginLoc,
SourceLocation EndLoc,
ArrayRef<Expr *> SubExprs) { … }
RecoveryExpr *RecoveryExpr::CreateEmpty(ASTContext &Ctx, unsigned NumSubExprs) { … }
void OMPArrayShapingExpr::setDimensions(ArrayRef<Expr *> Dims) { … }
void OMPArrayShapingExpr::setBracketsRanges(ArrayRef<SourceRange> BR) { … }
OMPArrayShapingExpr::OMPArrayShapingExpr(QualType ExprTy, Expr *Op,
SourceLocation L, SourceLocation R,
ArrayRef<Expr *> Dims)
: … { … }
OMPArrayShapingExpr *
OMPArrayShapingExpr::Create(const ASTContext &Context, QualType T, Expr *Op,
SourceLocation L, SourceLocation R,
ArrayRef<Expr *> Dims,
ArrayRef<SourceRange> BracketRanges) { … }
OMPArrayShapingExpr *OMPArrayShapingExpr::CreateEmpty(const ASTContext &Context,
unsigned NumDims) { … }
void OMPIteratorExpr::setIteratorDeclaration(unsigned I, Decl *D) { … }
void OMPIteratorExpr::setAssignmentLoc(unsigned I, SourceLocation Loc) { … }
void OMPIteratorExpr::setIteratorRange(unsigned I, Expr *Begin,
SourceLocation ColonLoc, Expr *End,
SourceLocation SecondColonLoc,
Expr *Step) { … }
Decl *OMPIteratorExpr::getIteratorDecl(unsigned I) { … }
OMPIteratorExpr::IteratorRange OMPIteratorExpr::getIteratorRange(unsigned I) { … }
SourceLocation OMPIteratorExpr::getAssignLoc(unsigned I) const { … }
SourceLocation OMPIteratorExpr::getColonLoc(unsigned I) const { … }
SourceLocation OMPIteratorExpr::getSecondColonLoc(unsigned I) const { … }
void OMPIteratorExpr::setHelper(unsigned I, const OMPIteratorHelperData &D) { … }
OMPIteratorHelperData &OMPIteratorExpr::getHelper(unsigned I) { … }
const OMPIteratorHelperData &OMPIteratorExpr::getHelper(unsigned I) const { … }
OMPIteratorExpr::OMPIteratorExpr(
QualType ExprTy, SourceLocation IteratorKwLoc, SourceLocation L,
SourceLocation R, ArrayRef<OMPIteratorExpr::IteratorDefinition> Data,
ArrayRef<OMPIteratorHelperData> Helpers)
: … { … }
OMPIteratorExpr *
OMPIteratorExpr::Create(const ASTContext &Context, QualType T,
SourceLocation IteratorKwLoc, SourceLocation L,
SourceLocation R,
ArrayRef<OMPIteratorExpr::IteratorDefinition> Data,
ArrayRef<OMPIteratorHelperData> Helpers) { … }
OMPIteratorExpr *OMPIteratorExpr::CreateEmpty(const ASTContext &Context,
unsigned NumIterators) { … }
HLSLOutArgExpr *HLSLOutArgExpr::Create(const ASTContext &C, QualType Ty,
OpaqueValueExpr *Base,
OpaqueValueExpr *OpV, Expr *WB,
bool IsInOut) { … }
HLSLOutArgExpr *HLSLOutArgExpr::CreateEmpty(const ASTContext &C) { … }