clang 18.0.0git
|
#include "clang/AST/ASTContext.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/ExprObjC.h"
#include "clang/AST/ExprOpenMP.h"
#include "clang/AST/TypeLoc.h"
#include "clang/Basic/CharInfo.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Sema/Designator.h"
#include "clang/Sema/EnterExpressionEvaluationContext.h"
#include "clang/Sema/Initialization.h"
#include "clang/Sema/Lookup.h"
#include "clang/Sema/SemaInternal.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/PointerIntPair.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
Go to the source code of this file.
Enumerations | |
enum | StringInitFailureKind { SIF_None , SIF_NarrowStringIntoWideChar , SIF_WideStringIntoChar , SIF_IncompatWideStringIntoWideChar , SIF_UTF8StringIntoPlainChar , SIF_PlainStringIntoUTF8Char , SIF_Other } |
enum | InvalidICRKind { IIK_okay , IIK_nonlocal , IIK_nonscalar } |
The non-zero enum values here are indexes into diagnostic alternatives. More... | |
enum | PathLifetimeKind { Extend , ShouldExtend , NoExtend } |
Whether a path to an object supports lifetime extension. More... | |
Functions | |
static bool | IsWideCharCompatible (QualType T, ASTContext &Context) |
Check whether T is compatible with a wide character type (wchar_t, char16_t or char32_t). | |
static StringInitFailureKind | IsStringInit (Expr *Init, const ArrayType *AT, ASTContext &Context) |
Check whether the array of type AT can be initialized by the Init expression by means of string initialization. | |
static StringInitFailureKind | IsStringInit (Expr *init, QualType declType, ASTContext &Context) |
static void | updateStringLiteralType (Expr *E, QualType Ty) |
Update the type of a string literal, including any surrounding parentheses, to match the type of the object which it is initializing. | |
static void | updateGNUCompoundLiteralRValue (Expr *E) |
Fix a compound literal initializing an array so it's correctly marked as an rvalue. | |
static void | CheckStringInit (Expr *Str, QualType &DeclT, const ArrayType *AT, Sema &S) |
static bool | hasAnyDesignatedInits (const InitListExpr *IL) |
static bool | isIdiomaticBraceElisionEntity (const InitializedEntity &Entity) |
Determine whether Entity is an entity for which it is idiomatic to elide the braces in aggregate initialization. | |
static void | warnBracedScalarInit (Sema &S, const InitializedEntity &Entity, SourceRange Braces) |
Warn that Entity was of scalar type and was initialized by a single-element braced initializer list. | |
static bool | checkDestructorReference (QualType ElementType, SourceLocation Loc, Sema &SemaRef) |
Check if the type of a class element has an accessible destructor, and marks it referenced. | |
static void | ExpandAnonymousFieldDesignator (Sema &SemaRef, DesignatedInitExpr *DIE, unsigned DesigIdx, IndirectFieldDecl *IndirectField) |
Expand a field designator that refers to a member of an anonymous struct or union into a series of field designators that refers to the field within the appropriate subobject. | |
static DesignatedInitExpr * | CloneDesignatedInitExpr (Sema &SemaRef, DesignatedInitExpr *DIE) |
static ExprResult | CheckArrayDesignatorExpr (Sema &S, Expr *Index, llvm::APSInt &Value) |
Check that the given Index expression is a valid array designator value. | |
static bool | maybeRecoverWithZeroInitialization (Sema &S, InitializationSequence &Sequence, const InitializedEntity &Entity) |
Tries to add a zero initializer. Returns true if that worked. | |
static void | MaybeProduceObjCObject (Sema &S, InitializationSequence &Sequence, const InitializedEntity &Entity) |
static void | TryListInitialization (Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, InitListExpr *InitList, InitializationSequence &Sequence, bool TreatUnavailableAsInvalid) |
Attempt list initialization (C++0x [dcl.init.list]) | |
static bool | TryInitializerListConstruction (Sema &S, InitListExpr *List, QualType DestType, InitializationSequence &Sequence, bool TreatUnavailableAsInvalid) |
When initializing from init list via constructor, handle initialization of an object of type std::initializer_list<T>. | |
static bool | hasCopyOrMoveCtorParam (ASTContext &Ctx, const ConstructorInfo &Info) |
Determine if the constructor has the signature of a copy or move constructor for the type T of the class in which it was found. | |
static OverloadingResult | ResolveConstructorOverload (Sema &S, SourceLocation DeclLoc, MultiExprArg Args, OverloadCandidateSet &CandidateSet, QualType DestType, DeclContext::lookup_result Ctors, OverloadCandidateSet::iterator &Best, bool CopyInitializing, bool AllowExplicit, bool OnlyListConstructors, bool IsListInit, bool SecondStepOfCopyInit=false) |
static void | TryConstructorInitialization (Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, MultiExprArg Args, QualType DestType, QualType DestArrayType, InitializationSequence &Sequence, bool IsListInit=false, bool IsInitListCopy=false) |
Attempt initialization by constructor (C++ [dcl.init]), which enumerates the constructors of the initialized entity and performs overload resolution to select the best. | |
static bool | ResolveOverloadedFunctionForReferenceBinding (Sema &S, Expr *Initializer, QualType &SourceType, QualType &UnqualifiedSourceType, QualType UnqualifiedTargetType, InitializationSequence &Sequence) |
static void | TryReferenceInitializationCore (Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, Expr *Initializer, QualType cv1T1, QualType T1, Qualifiers T1Quals, QualType cv2T2, QualType T2, Qualifiers T2Quals, InitializationSequence &Sequence) |
Reference initialization without resolving overloaded functions. | |
static void | TryValueInitialization (Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, InitializationSequence &Sequence, InitListExpr *InitList) |
Attempt value initialization (C++ [dcl.init]p7). | |
static void | TryReferenceListInitialization (Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, InitListExpr *InitList, InitializationSequence &Sequence, bool TreatUnavailableAsInvalid) |
Attempt list initialization of a reference. | |
static OverloadingResult | TryRefInitWithConversionFunction (Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, Expr *Initializer, bool AllowRValues, bool IsLValueRef, InitializationSequence &Sequence) |
Try a reference initialization that involves calling a conversion function. | |
static void | CheckCXX98CompatAccessibleCopy (Sema &S, const InitializedEntity &Entity, Expr *CurInitExpr) |
Check whether elidable copy construction for binding a reference to a temporary would have succeeded if we were building in C++98 mode, for -Wc++98-compat. | |
static void | TryReferenceInitialization (Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, Expr *Initializer, InitializationSequence &Sequence) |
Attempt reference initialization (C++0x [dcl.init.ref]) | |
static bool | isNonReferenceableGLValue (Expr *E) |
Determine whether an expression is a non-referenceable glvalue (one to which a reference can never bind). | |
static void | TryStringLiteralInitialization (Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, Expr *Initializer, InitializationSequence &Sequence) |
Attempt character array initialization from a string literal (C++ [dcl.init.string], C99 6.7.8). | |
static void | TryDefaultInitialization (Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, InitializationSequence &Sequence) |
Attempt default initialization (C++ [dcl.init]p6). | |
static void | TryOrBuildParenListInitialization (Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef< Expr * > Args, InitializationSequence &Sequence, bool VerifyOnly, ExprResult *Result=nullptr) |
static void | TryUserDefinedConversion (Sema &S, QualType DestType, const InitializationKind &Kind, Expr *Initializer, InitializationSequence &Sequence, bool TopLevelOfInitList) |
Attempt a user-defined conversion between two types (C++ [dcl.init]), which enumerates all conversion functions and performs overload resolution to select the best. | |
static bool | isLibstdcxxPointerReturnFalseHack (Sema &S, const InitializedEntity &Entity, const Expr *Init) |
An egregious hack for compatibility with libstdc++-4.2: in <tr1/hashtable>, a function with a pointer return type contains a 'return false;' statement. | |
static InvalidICRKind | isInvalidICRSource (ASTContext &C, Expr *e, bool isAddressOf, bool &isWeakAccess) |
Determines whether this expression is an acceptable ICR source. | |
static void | checkIndirectCopyRestoreSource (Sema &S, Expr *src) |
Check whether the given expression is a valid operand for an indirect copy/restore. | |
static bool | hasCompatibleArrayTypes (ASTContext &Context, const ArrayType *Dest, const ArrayType *Source) |
Determine whether we have compatible array types for the purposes of GNU by-copy array initialization. | |
static bool | tryObjCWritebackConversion (Sema &S, InitializationSequence &Sequence, const InitializedEntity &Entity, Expr *Initializer) |
static bool | TryOCLSamplerInitialization (Sema &S, InitializationSequence &Sequence, QualType DestType, Expr *Initializer) |
static bool | IsZeroInitializer (Expr *Initializer, Sema &S) |
static bool | TryOCLZeroOpaqueTypeInitialization (Sema &S, InitializationSequence &Sequence, QualType DestType, Expr *Initializer) |
static bool | isExprAnUnaddressableFunction (Sema &S, const Expr *E) |
Tries to get a FunctionDecl out of E . | |
static bool | canPerformArrayCopy (const InitializedEntity &Entity) |
Determine whether we can perform an elementwise array copy for this kind of entity. | |
static Sema::AssignmentAction | getAssignmentAction (const InitializedEntity &Entity, bool Diagnose=false) |
static bool | shouldBindAsTemporary (const InitializedEntity &Entity) |
Whether we should bind a created object as a temporary when initializing the given entity. | |
static bool | shouldDestroyEntity (const InitializedEntity &Entity) |
Whether the given entity, when initialized with an object created for that initialization, requires destruction. | |
static SourceLocation | getInitializationLoc (const InitializedEntity &Entity, Expr *Initializer) |
Get the location at which initialization diagnostics should appear. | |
static ExprResult | CopyObject (Sema &S, QualType T, const InitializedEntity &Entity, ExprResult CurInit, bool IsExtraneousCopy) |
Make a (potentially elidable) temporary copy of the object provided by the given initializer by calling the appropriate copy constructor. | |
static bool | isExplicitTemporary (const InitializedEntity &Entity, const InitializationKind &Kind, unsigned NumArgs) |
Returns true if the parameters describe a constructor initialization of an explicit temporary object, e.g. | |
static ExprResult | PerformConstructorInitialization (Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, MultiExprArg Args, const InitializationSequence::Step &Step, bool &ConstructorInitRequiresZeroInit, bool IsListInitialization, bool IsStdInitListInitialization, SourceLocation LBraceLoc, SourceLocation RBraceLoc) |
static LifetimeResult | getEntityLifetime (const InitializedEntity *Entity, const InitializedEntity *InitField=nullptr) |
Determine the declaration which an initialized entity ultimately refers to, for the purpose of lifetime-extending a temporary bound to a reference in the initialization of Entity . | |
static bool | isVarOnPath (IndirectLocalPath &Path, VarDecl *VD) |
static bool | pathContainsInit (IndirectLocalPath &Path) |
static void | visitLocalsRetainedByInitializer (IndirectLocalPath &Path, Expr *Init, LocalVisitor Visit, bool RevisitSubinits, bool EnableLifetimeWarnings) |
Visit the locals that would be reachable through an object initialized by the prvalue expression Init . | |
static void | visitLocalsRetainedByReferenceBinding (IndirectLocalPath &Path, Expr *Init, ReferenceKind RK, LocalVisitor Visit, bool EnableLifetimeWarnings) |
Visit the locals that would be reachable through a reference bound to the glvalue expression Init . | |
template<typename T > | |
static bool | isRecordWithAttr (QualType Type) |
static bool | isInStlNamespace (const Decl *D) |
static bool | shouldTrackImplicitObjectArg (const CXXMethodDecl *Callee) |
static bool | shouldTrackFirstArgument (const FunctionDecl *FD) |
static void | handleGslAnnotatedTypes (IndirectLocalPath &Path, Expr *Call, LocalVisitor Visit) |
static bool | implicitObjectParamIsLifetimeBound (const FunctionDecl *FD) |
static void | visitLifetimeBoundArguments (IndirectLocalPath &Path, Expr *Call, LocalVisitor Visit) |
static PathLifetimeKind | shouldLifetimeExtendThroughPath (const IndirectLocalPath &Path) |
Determine whether this is an indirect path to a temporary that we are supposed to lifetime-extend along. | |
static SourceRange | nextPathEntryRange (const IndirectLocalPath &Path, unsigned I, Expr *E) |
Find the range for the first interesting entry in the path at or after I. | |
static bool | pathOnlyInitializesGslPointer (IndirectLocalPath &Path) |
static void | DiagnoseNarrowingInInitList (Sema &S, const ImplicitConversionSequence &ICS, QualType PreNarrowingType, QualType EntityType, const Expr *PostInit) |
static void | CheckMoveOnConstruction (Sema &S, const Expr *InitExpr, bool IsReturnStmt) |
Provide warnings when std::move is used on construction. | |
static void | CheckForNullPointerDereference (Sema &S, const Expr *E) |
static bool | DiagnoseUninitializedReference (Sema &S, SourceLocation Loc, QualType T) |
Somewhere within T there is an uninitialized reference subobject. | |
static void | emitBadConversionNotes (Sema &S, const InitializedEntity &entity, Expr *op) |
Emit notes associated with an initialization that failed due to a "simple" conversion failure. | |
static void | diagnoseListInit (Sema &S, const InitializedEntity &Entity, InitListExpr *InitList) |
static bool | NarrowingErrs (const LangOptions &L) |
static bool | isOrIsDerivedFromSpecializationOf (CXXRecordDecl *RD, ClassTemplateDecl *CTD) |
Determine whether RD is, or is derived from, a specialization of CTD. | |
enum InvalidICRKind |
The non-zero enum values here are indexes into diagnostic alternatives.
Enumerator | |
---|---|
IIK_okay | |
IIK_nonlocal | |
IIK_nonscalar |
Definition at line 5880 of file SemaInit.cpp.
enum PathLifetimeKind |
Whether a path to an object supports lifetime extension.
Definition at line 8009 of file SemaInit.cpp.
Enumerator | |
---|---|
SIF_None | |
SIF_NarrowStringIntoWideChar | |
SIF_WideStringIntoChar | |
SIF_IncompatWideStringIntoWideChar | |
SIF_UTF8StringIntoPlainChar | |
SIF_PlainStringIntoUTF8Char | |
SIF_Other |
Definition at line 54 of file SemaInit.cpp.
|
static |
Determine whether we can perform an elementwise array copy for this kind of entity.
Definition at line 6113 of file SemaInit.cpp.
References canPerformArrayCopy(), clang::InitializedEntity::EK_ArrayElement, clang::InitializedEntity::EK_LambdaCapture, clang::InitializedEntity::EK_Member, clang::InitializedEntity::EK_Variable, clang::InitializedEntity::getDecl(), clang::InitializedEntity::getKind(), clang::InitializedEntity::getParent(), and clang::InitializedEntity::isImplicitMemberInitializer().
Referenced by canPerformArrayCopy(), and clang::InitializationSequence::InitializeFrom().
|
static |
Check that the given Index expression is a valid array designator value.
This is essentially just a wrapper around VerifyIntegerConstantExpression that also checks for negative values and produces a reasonable diagnostic if there is a failure. Returns the index expression, possibly with an implicit cast added, on success. If everything went okay, Value will receive the value of the constant expression.
Definition at line 3342 of file SemaInit.cpp.
References clang::Sema::AllowFold, clang::Sema::Diag(), clang::Result, toString(), and clang::Sema::VerifyIntegerConstantExpression().
Referenced by clang::Sema::ActOnDesignatedInitializer().
|
static |
Check whether elidable copy construction for binding a reference to a temporary would have succeeded if we were building in C++98 mode, for -Wc++98-compat.
Definition at line 6914 of file SemaInit.cpp.
References clang::Sema::CheckConstructorAccess(), clang::OverloadCandidateSet::CSK_Normal, Diag(), clang::Sema::Diag(), clang::Sema::Diags, clang::Type::getAs(), getInitializationLoc(), clang::InitializedEntity::getKind(), clang::Sema::getLangOpts(), clang::Stmt::getSourceRange(), clang::Expr::getType(), int, clang::DiagnosticsEngine::isIgnored(), clang::Sema::LookupConstructors(), clang::OverloadCandidateSet::NoteCandidates(), clang::Sema::NoteDeletedFunction(), clang::OCD_AllCandidates, clang::OCD_AmbiguousCandidates, clang::OR_Ambiguous, clang::OR_Deleted, clang::OR_No_Viable_Function, clang::OR_Success, clang::Sema::PDiag(), and ResolveConstructorOverload().
Referenced by TryReferenceInitializationCore().
|
static |
Check if the type of a class element has an accessible destructor, and marks it referenced.
Returns true if we shouldn't form a reference to the destructor.
Aggregate initialization requires a class element's destructor be accessible per 11.6.1 [dcl.init.aggr]:
The destructor for each element of class type is potentially invoked (15.4 [class.dtor]) from the context where the aggregate initialization occurs.
Definition at line 1923 of file SemaInit.cpp.
References clang::Sema::CheckDestructorAccess(), clang::Sema::DiagnoseUseOfDecl(), clang::Type::getAsCXXRecordDecl(), clang::Sema::LookupDestructor(), clang::Sema::MarkFunctionReferenced(), and clang::Sema::PDiag().
Referenced by PerformConstructorInitialization().
Definition at line 8457 of file SemaInit.cpp.
References clang::Sema::Context, clang::Sema::DiagRuntimeBehavior(), clang::Expr::IgnoreParenCasts(), clang::Expr::NPC_ValueDependentIsNotNull, and clang::Sema::PDiag().
Check whether the given expression is a valid operand for an indirect copy/restore.
Definition at line 5950 of file SemaInit.cpp.
References clang::Sema::Cleanup, clang::Sema::Context, clang::Sema::Diag(), clang::Expr::getExprLoc(), clang::Sema::getLangOpts(), clang::Stmt::getSourceRange(), IIK_okay, isInvalidICRSource(), clang::Expr::isPRValue(), and clang::CleanupInfo::setExprNeedsCleanups().
Referenced by clang::InitializationSequence::Perform().
Provide warnings when std::move is used on construction.
Definition at line 8360 of file SemaInit.cpp.
References clang::Sema::Context, clang::FixItHint::CreateRemoval(), clang::Sema::Diag(), clang::CallExpr::getArg(), clang::CXXConstructExpr::getArg(), clang::CharSourceRange::getBegin(), clang::CallExpr::getBeginLoc(), clang::Stmt::getBeginLoc(), clang::CallExpr::getCallee(), clang::CXXConstructExpr::getConstructor(), clang::DeclRefExpr::getDecl(), clang::SourceManager::getImmediateExpansionRange(), clang::SourceLocation::getLocWithOffset(), clang::CXXConstructExpr::getNumArgs(), clang::CallExpr::getRParenLoc(), clang::Sema::getSourceManager(), clang::ValueDecl::getType(), clang::Expr::getType(), clang::Decl::hasAttr(), clang::VarDecl::hasLocalStorage(), clang::ASTContext::hasSameUnqualifiedType(), clang::Expr::IgnoreImpCasts(), clang::Expr::IgnoreImplicit(), clang::Expr::IgnoreParenImpCasts(), clang::Expr::IgnoreParens(), clang::Sema::inTemplateInstantiation(), clang::SourceManager::isAtStartOfImmediateMacroExpansion(), clang::CallExpr::isCallToStdMove(), clang::CXXConstructorDecl::isCopyOrMoveConstructor(), clang::SourceLocation::isMacroID(), clang::Expr::isPRValue(), clang::Type::isRecordType(), and clang::DeclRefExpr::refersToEnclosingVariableOrCapture().
Referenced by clang::InitializationSequence::Perform().
Definition at line 213 of file SemaInit.cpp.
References clang::Sema::Context, clang::Sema::Diag(), clang::Type::getAsArrayTypeUnsafe(), clang::Stmt::getBeginLoc(), clang::ASTContext::getConstantArrayType(), clang::Sema::getLangOpts(), clang::ConstantArrayType::getSize(), clang::Stmt::getSourceRange(), clang::Expr::getType(), clang::Expr::IgnoreParens(), clang::ArrayType::Normal, and updateStringLiteralType().
Referenced by clang::InitializationSequence::Perform().
|
static |
Definition at line 2490 of file SemaInit.cpp.
References clang::Sema::Context, clang::DesignatedInitExpr::Create(), clang::DesignatedInitExpr::designators(), clang::DesignatedInitExpr::getEqualOrColonLoc(), clang::DesignatedInitExpr::getInit(), clang::DesignatedInitExpr::getNumSubExprs(), clang::DesignatedInitExpr::getSubExpr(), and clang::DesignatedInitExpr::usesGNUSyntax().
|
static |
Make a (potentially elidable) temporary copy of the object provided by the given initializer by calling the appropriate copy constructor.
S | The Sema object used for type-checking. |
T | The type of the temporary object, which must either be the type of the initializer expression or a superclass thereof. |
Entity | The entity being initialized. |
CurInit | The initializer expression. |
IsExtraneousCopy | Whether this is an "extraneous" copy that is permitted in C++03 (but not C++0x) when binding a reference to an rvalue. |
Definition at line 6761 of file SemaInit.cpp.
References clang::Sema::BuildCXXConstructExpr(), clang::Sema::BuildCXXDefaultArgExpr(), clang::Sema::CheckConstructorAccess(), clang::CXXConstructExpr::CK_Complete, clang::Sema::CompleteConstructorCall(), clang::Sema::Context, clang::OverloadCandidateSet::CSK_Normal, clang::Sema::Diag(), clang::ExprError(), clang::ActionResult< PtrTy, Compress >::get(), clang::ActionResult< PtrTy, Compress >::getAs(), clang::Type::getAs(), getInitializationLoc(), clang::InitializedEntity::getKind(), clang::Stmt::getSourceRange(), clang::ValueDecl::getType(), clang::Expr::getType(), clang::ASTContext::hasSameUnqualifiedType(), int, clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::Sema::isSFINAEContext(), clang::Expr::isTemporaryObject(), clang::Sema::LookupConstructors(), clang::Sema::MaybeBindToTemporary(), clang::OverloadCandidateSet::NoteCandidates(), clang::Sema::NoteDeletedFunction(), clang::OCD_AllCandidates, clang::OCD_AmbiguousCandidates, clang::OR_Ambiguous, clang::OR_Deleted, clang::OR_No_Viable_Function, clang::OR_Success, clang::Sema::PDiag(), clang::Sema::RequireCompleteType(), ResolveConstructorOverload(), shouldBindAsTemporary(), and clang::OverloadCandidateSet::size().
Referenced by clang::InitializationSequence::Perform().
|
static |
Definition at line 9511 of file SemaInit.cpp.
References clang::Type::castAs(), clang::Sema::Context, clang::Sema::Diag(), diagnoseListInit(), clang::InitListExpr::getBeginLoc(), clang::ASTContext::getConstantArrayType(), clang::InitializedEntity::getDecl(), clang::Sema::getLangOpts(), clang::InitListExpr::getNumInits(), clang::ASTContext::getSizeType(), clang::InitializedEntity::getType(), clang::ASTContext::getTypeSize(), clang::InitializedEntity::InitializeTemporary(), clang::Type::isReferenceType(), clang::Sema::isStdInitializerList(), clang::ArrayType::Normal, and clang::QualType::withConst().
Referenced by clang::InitializationSequence::Diagnose(), and diagnoseListInit().
|
static |
Definition at line 10393 of file SemaInit.cpp.
References clang::UserDefinedConversionSequence::After, clang::ImplicitConversionSequence::AmbiguousConversion, clang::ImplicitConversionSequence::BadConversion, clang::Sema::Context, clang::FixItHint::CreateInsertion(), clang::Sema::Diag(), clang::ImplicitConversionSequence::EllipsisConversion, clang::Type::getAs(), clang::APValue::getAsString(), clang::Sema::getASTContext(), clang::Stmt::getBeginLoc(), clang::Stmt::getEndLoc(), clang::ImplicitConversionSequence::getKind(), clang::Sema::getLangOpts(), clang::QualType::getLocalUnqualifiedType(), clang::Sema::getLocForEndOfToken(), clang::StandardConversionSequence::getNarrowingKind(), clang::Stmt::getSourceRange(), NarrowingErrs(), clang::NK_Constant_Narrowing, clang::NK_Dependent_Narrowing, clang::NK_Not_Narrowing, clang::NK_Type_Narrowing, clang::NK_Variable_Narrowing, clang::ImplicitConversionSequence::Standard, clang::ImplicitConversionSequence::StandardConversion, clang::ImplicitConversionSequence::StaticObjectArgumentConversion, clang::ImplicitConversionSequence::UserDefined, and clang::ImplicitConversionSequence::UserDefinedConversion.
Referenced by clang::InitializationSequence::Perform().
|
static |
Somewhere within T there is an uninitialized reference subobject.
Dig it out and diagnose it.
Definition at line 9441 of file SemaInit.cpp.
References clang::CXXRecordDecl::bases(), clang::Sema::Diag(), DiagnoseUninitializedReference(), clang::RecordDecl::fields(), clang::Type::getAsCXXRecordDecl(), clang::Type::getBaseElementTypeUnsafe(), clang::QualType::getNonReferenceType(), clang::CXXRecordDecl::hasUninitializedReferenceMember(), and clang::Type::isReferenceType().
Referenced by clang::InitializationSequence::Diagnose(), and DiagnoseUninitializedReference().
|
static |
Emit notes associated with an initialization that failed due to a "simple" conversion failure.
Definition at line 9480 of file SemaInit.cpp.
References clang::Qualifiers::compatiblyIncludes(), clang::Sema::Diag(), clang::InitializedEntity::EK_Result, clang::Sema::EmitRelatedResultTypeNote(), clang::Sema::EmitRelatedResultTypeNoteForReturn(), clang::Sema::getASTContext(), clang::QualType::getCanonicalType(), clang::InitializedEntity::getKind(), clang::QualType::getNonReferenceType(), clang::Type::getPointeeCXXRecordDecl(), clang::Type::getPointeeType(), clang::QualType::getQualifiers(), clang::ASTContext::getTagDeclType(), clang::Expr::getType(), clang::InitializedEntity::getType(), and clang::Type::isObjCObjectPointerType().
Referenced by clang::InitializationSequence::Diagnose().
|
static |
Expand a field designator that refers to a member of an anonymous struct or union into a series of field designators that refers to the field within the appropriate subobject.
Definition at line 2462 of file SemaInit.cpp.
References clang::IndirectFieldDecl::chain_begin(), clang::IndirectFieldDecl::chain_end(), clang::Sema::Context, clang::Designator::CreateFieldDesignator(), clang::DesignatedInitExpr::ExpandDesignator(), clang::DesignatedInitExpr::getDesignator(), clang::DesignatedInitExpr::Designator::getDotLoc(), and clang::DesignatedInitExpr::Designator::getFieldLoc().
|
static |
Definition at line 6581 of file SemaInit.cpp.
References clang::Sema::AA_Casting, clang::Sema::AA_Converting, clang::Sema::AA_Initializing, clang::Sema::AA_Passing, clang::Sema::AA_Passing_CFAudited, clang::Sema::AA_Returning, clang::Sema::AA_Sending, clang::InitializedEntity::EK_ArrayElement, clang::InitializedEntity::EK_Base, clang::InitializedEntity::EK_Binding, clang::InitializedEntity::EK_BlockElement, clang::InitializedEntity::EK_ComplexElement, clang::InitializedEntity::EK_CompoundLiteralInit, clang::InitializedEntity::EK_Delegating, clang::InitializedEntity::EK_Exception, clang::InitializedEntity::EK_LambdaCapture, clang::InitializedEntity::EK_LambdaToBlockConversionBlockElement, clang::InitializedEntity::EK_Member, clang::InitializedEntity::EK_New, clang::InitializedEntity::EK_Parameter, clang::InitializedEntity::EK_Parameter_CF_Audited, clang::InitializedEntity::EK_ParenAggInitMember, clang::InitializedEntity::EK_RelatedResult, clang::InitializedEntity::EK_Result, clang::InitializedEntity::EK_StmtExprResult, clang::InitializedEntity::EK_TemplateParameter, clang::InitializedEntity::EK_Temporary, clang::InitializedEntity::EK_Variable, clang::InitializedEntity::EK_VectorElement, clang::InitializedEntity::getDecl(), clang::Decl::getDeclContext(), and clang::InitializedEntity::getKind().
Referenced by clang::InitializationSequence::Perform().
|
static |
Determine the declaration which an initialized entity ultimately refers to, for the purpose of lifetime-extending a temporary bound to a reference in the initialization of Entity
.
Definition at line 7192 of file SemaInit.cpp.
References clang::InitializedEntity::EK_ArrayElement, clang::InitializedEntity::EK_Base, clang::InitializedEntity::EK_Binding, clang::InitializedEntity::EK_BlockElement, clang::InitializedEntity::EK_ComplexElement, clang::InitializedEntity::EK_CompoundLiteralInit, clang::InitializedEntity::EK_Delegating, clang::InitializedEntity::EK_Exception, clang::InitializedEntity::EK_LambdaCapture, clang::InitializedEntity::EK_LambdaToBlockConversionBlockElement, clang::InitializedEntity::EK_Member, clang::InitializedEntity::EK_New, clang::InitializedEntity::EK_Parameter, clang::InitializedEntity::EK_Parameter_CF_Audited, clang::InitializedEntity::EK_ParenAggInitMember, clang::InitializedEntity::EK_RelatedResult, clang::InitializedEntity::EK_Result, clang::InitializedEntity::EK_StmtExprResult, clang::InitializedEntity::EK_TemplateParameter, clang::InitializedEntity::EK_Temporary, clang::InitializedEntity::EK_Variable, clang::InitializedEntity::EK_VectorElement, getEntityLifetime(), clang::InitializedEntity::getKind(), clang::InitializedEntity::getParent(), and clang::InitializedEntity::isDefaultMemberInitializer().
Referenced by clang::Sema::checkInitializerLifetime(), and getEntityLifetime().
|
static |
Get the location at which initialization diagnostics should appear.
Definition at line 6703 of file SemaInit.cpp.
References clang::InitializedEntity::EK_ArrayElement, clang::InitializedEntity::EK_Base, clang::InitializedEntity::EK_Binding, clang::InitializedEntity::EK_BlockElement, clang::InitializedEntity::EK_ComplexElement, clang::InitializedEntity::EK_CompoundLiteralInit, clang::InitializedEntity::EK_Delegating, clang::InitializedEntity::EK_Exception, clang::InitializedEntity::EK_LambdaCapture, clang::InitializedEntity::EK_LambdaToBlockConversionBlockElement, clang::InitializedEntity::EK_Member, clang::InitializedEntity::EK_New, clang::InitializedEntity::EK_Parameter, clang::InitializedEntity::EK_Parameter_CF_Audited, clang::InitializedEntity::EK_ParenAggInitMember, clang::InitializedEntity::EK_RelatedResult, clang::InitializedEntity::EK_Result, clang::InitializedEntity::EK_StmtExprResult, clang::InitializedEntity::EK_TemplateParameter, clang::InitializedEntity::EK_Temporary, clang::InitializedEntity::EK_Variable, clang::InitializedEntity::EK_VectorElement, clang::InitializedEntity::getCaptureLoc(), clang::InitializedEntity::getDecl(), clang::InitializedEntity::getKind(), clang::Decl::getLocation(), clang::InitializedEntity::getReturnLoc(), clang::InitializedEntity::getThrowLoc(), and clang::Initializer.
Referenced by CheckCXX98CompatAccessibleCopy(), and CopyObject().
|
static |
Definition at line 7463 of file SemaInit.cpp.
References clang::DeclContext::getParent(), clang::Decl::hasAttr(), shouldTrackFirstArgument(), shouldTrackImplicitObjectArg(), visitLocalsRetainedByInitializer(), and visitLocalsRetainedByReferenceBinding().
Referenced by visitLocalsRetainedByInitializer(), and visitLocalsRetainedByReferenceBinding().
|
static |
Definition at line 973 of file SemaInit.cpp.
|
static |
Determine whether we have compatible array types for the purposes of GNU by-copy array initialization.
Definition at line 5968 of file SemaInit.cpp.
References clang::ArrayType::getElementType(), clang::ASTContext::hasSameType(), clang::Type::isConstantArrayType(), and clang::Type::isIncompleteArrayType().
Referenced by clang::InitializationSequence::InitializeFrom().
|
static |
Determine if the constructor has the signature of a copy or move constructor for the type T of the class in which it was found.
That is, determine if its first parameter is of type T or reference to (possibly cv-qualified) T.
Definition at line 4098 of file SemaInit.cpp.
References clang::ConstructorInfo::Constructor, clang::ConstructorInfo::FoundDecl, clang::Decl::getDeclContext(), clang::QualType::getNonReferenceType(), clang::FunctionDecl::getNumParams(), clang::FunctionDecl::getParamDecl(), clang::ASTContext::getRecordType(), clang::ValueDecl::getType(), and clang::ASTContext::hasSameUnqualifiedType().
Referenced by PerformConstructorInitialization(), and ResolveConstructorOverload().
|
static |
Definition at line 7522 of file SemaInit.cpp.
References clang::TypeLoc::getAsAdjusted(), clang::Decl::getASTContext(), clang::AttributedTypeLoc::getAttrAs(), clang::DeclarationName::getCXXOverloadedOperator(), clang::NamedDecl::getDeclName(), clang::ASTContext::getLValueReferenceType(), clang::AttributedTypeLoc::getModifiedLoc(), clang::FunctionDecl::getReturnType(), clang::TypeSourceInfo::getTypeLoc(), clang::DeclaratorDecl::getTypeSourceInfo(), clang::ASTContext::hasSameType(), clang::isCompoundAssignmentOperator(), and clang::Type::isLValueReferenceType().
Referenced by visitLifetimeBoundArguments().
|
static |
Returns true if the parameters describe a constructor initialization of an explicit temporary object, e.g.
"Point(x, y)".
Definition at line 6989 of file SemaInit.cpp.
References clang::InitializedEntity::EK_CompoundLiteralInit, clang::InitializedEntity::EK_RelatedResult, clang::InitializedEntity::EK_Temporary, clang::InitializedEntity::getKind(), clang::InitializationKind::IK_Direct, clang::InitializationKind::IK_DirectList, and clang::InitializationKind::IK_Value.
Referenced by PerformConstructorInitialization().
Tries to get a FunctionDecl out of E
.
If it succeeds and we can take the address of that function, this returns true. Otherwise, it returns false.
Definition at line 6102 of file SemaInit.cpp.
References clang::Sema::checkAddressOfFunctionIsAvailable().
Referenced by clang::InitializationSequence::InitializeFrom().
|
static |
Determine whether Entity is an entity for which it is idiomatic to elide the braces in aggregate initialization.
Definition at line 1047 of file SemaInit.cpp.
References clang::Type::castAs(), clang::InitializedEntity::EK_Base, clang::InitializedEntity::EK_Member, clang::RecordDecl::field_empty(), clang::InitializedEntity::getKind(), clang::CXXRecordDecl::getNumBases(), clang::InitializedEntity::getParent(), and clang::InitializedEntity::getType().
Definition at line 7391 of file SemaInit.cpp.
References clang::Decl::getDeclContext(), clang::DeclContext::isStdNamespace(), and clang::isUppercase().
Referenced by shouldTrackImplicitObjectArg().
|
static |
Determines whether this expression is an acceptable ICR source.
Definition at line 5883 of file SemaInit.cpp.
References clang::C, clang::QualType::getObjCLifetime(), clang::Expr::getType(), clang::VarDecl::hasLocalStorage(), clang::Expr::IgnoreParens(), IIK_nonlocal, IIK_nonscalar, IIK_okay, isInvalidICRSource(), clang::Expr::isNullPointerConstant(), clang::Expr::NPC_ValueDependentIsNull, and clang::Qualifiers::OCL_Weak.
Referenced by checkIndirectCopyRestoreSource(), and isInvalidICRSource().
|
static |
An egregious hack for compatibility with libstdc++-4.2: in <tr1/hashtable>, a function with a pointer return type contains a 'return false;' statement.
In C++11, 'false' is not a null pointer, so this breaks the build of any code using that header.
Work around this by treating 'return false;' as zero-initializing the result if it's used in a pointer-returning function in a system header.
Definition at line 5868 of file SemaInit.cpp.
References clang::InitializedEntity::EK_Result, clang::InitializedEntity::getKind(), clang::Sema::getLangOpts(), clang::Sema::getSourceManager(), clang::InitializedEntity::getType(), clang::SourceManager::isInSystemHeader(), and clang::Type::isPointerType().
Referenced by clang::InitializationSequence::InitializeFrom().
Determine whether an expression is a non-referenceable glvalue (one to which a reference can never bind).
Attempting to bind a reference to such a glvalue will always create a temporary.
Definition at line 4973 of file SemaInit.cpp.
References clang::Expr::refersToBitField(), clang::Expr::refersToMatrixElement(), and clang::Expr::refersToVectorElement().
Referenced by TryReferenceInitializationCore().
|
static |
Determine whether RD is, or is derived from, a specialization of CTD.
Definition at line 10563 of file SemaInit.cpp.
References clang::declaresSameEntity(), and clang::CXXRecordDecl::forallBases().
Referenced by clang::Sema::DeduceTemplateSpecializationFromInitializer().
Definition at line 7382 of file SemaInit.cpp.
References clang::Type::getAsCXXRecordDecl(), and clang::Decl::hasAttr().
|
static |
Check whether the array of type AT can be initialized by the Init expression by means of string initialization.
Returns SIF_None if so, otherwise returns a StringInitFailureKind that describes why the initialization would not work.
Definition at line 68 of file SemaInit.cpp.
References clang::ASTContext::Char16Ty, clang::ASTContext::Char32Ty, clang::QualType::getCanonicalType(), clang::ASTContext::getCanonicalType(), clang::ArrayType::getElementType(), clang::StringLiteral::getKind(), clang::BuiltinType::getKind(), clang::ASTContext::getLangOpts(), clang::CanQual< T >::getUnqualifiedType(), clang::ASTContext::getWideCharType(), clang::Type::isChar8Type(), clang::Type::isCharType(), IsWideCharCompatible(), clang::StringLiteral::Ordinary, SIF_IncompatWideStringIntoWideChar, SIF_NarrowStringIntoWideChar, SIF_None, SIF_Other, SIF_PlainStringIntoUTF8Char, SIF_UTF8StringIntoPlainChar, SIF_WideStringIntoChar, clang::ASTContext::typesAreCompatible(), clang::StringLiteral::Unevaluated, clang::StringLiteral::UTF16, clang::StringLiteral::UTF32, clang::StringLiteral::UTF8, and clang::StringLiteral::Wide.
Referenced by clang::InitializationSequence::InitializeFrom(), IsStringInit(), and TryListInitialization().
|
static |
Definition at line 154 of file SemaInit.cpp.
References clang::ast_matchers::arrayType, clang::ASTContext::getAsArrayType(), IsStringInit(), and SIF_Other.
Definition at line 7358 of file SemaInit.cpp.
Referenced by visitLocalsRetainedByInitializer(), and visitLocalsRetainedByReferenceBinding().
|
static |
Check whether T is compatible with a wide character type (wchar_t, char16_t or char32_t).
Definition at line 44 of file SemaInit.cpp.
References clang::ASTContext::Char16Ty, clang::ASTContext::Char32Ty, clang::ASTContext::getLangOpts(), clang::ASTContext::getWideCharType(), and clang::ASTContext::typesAreCompatible().
Referenced by clang::InitializationSequence::InitializeFrom(), and IsStringInit().
Definition at line 6044 of file SemaInit.cpp.
References clang::Sema::getASTContext(), and clang::Initializer.
Referenced by TryOCLZeroOpaqueTypeInitialization().
|
static |
When initializing a parameter, produce the value if it's marked attribute((ns_consumed)).
When initializing a return value, if the return type is a retainable type, then returns need to immediately retain the object. If an autorelease is required, it will be done at the last instant.
Definition at line 4023 of file SemaInit.cpp.
References clang::InitializationSequence::AddProduceObjCObjectStep(), clang::InitializedEntity::EK_Result, clang::InitializedEntity::EK_StmtExprResult, clang::InitializedEntity::getKind(), clang::Sema::getLangOpts(), clang::InitializedEntity::getType(), clang::Type::isObjCRetainableType(), clang::InitializedEntity::isParameterConsumed(), and clang::InitializedEntity::isParameterKind().
Referenced by clang::InitializationSequence::InitializeFrom().
|
static |
Tries to add a zero initializer. Returns true if that worked.
Definition at line 4003 of file SemaInit.cpp.
References clang::InitializationSequence::AddZeroInitializationStep(), clang::InitializedEntity::EK_Variable, clang::QualType::getCanonicalType(), clang::InitializedEntity::getDecl(), clang::Decl::getEndLoc(), clang::Sema::getFixItZeroInitializerForType(), clang::VarDecl::getInit(), clang::InitializedEntity::getKind(), clang::Sema::getLocForEndOfToken(), clang::ValueDecl::getType(), clang::InitializedEntity::getType(), clang::SourceLocation::isMacroID(), and clang::InitializationSequence::SetZeroInitializationFixit().
Referenced by TryConstructorInitialization(), and TryDefaultInitialization().
|
static |
Definition at line 10388 of file SemaInit.cpp.
References clang::LangOptions::isCompatibleWithMSVC(), and clang::LangOptions::MSVC2015.
Referenced by DiagnoseNarrowingInInitList().
|
static |
Find the range for the first interesting entry in the path at or after I.
Definition at line 8036 of file SemaInit.cpp.
References clang::Stmt::getSourceRange().
Referenced by clang::Sema::checkInitializerLifetime().
|
static |
Definition at line 7365 of file SemaInit.cpp.
Referenced by clang::Sema::checkInitializerLifetime().
|
static |
Definition at line 8066 of file SemaInit.cpp.
Referenced by clang::Sema::checkInitializerLifetime().
|
static |
Definition at line 7014 of file SemaInit.cpp.
References clang::InitializedEntity::allowsNRVO(), clang::Sema::BuildCXXConstructExpr(), clang::Sema::CheckConstructorAccess(), checkDestructorReference(), clang::Sema::CheckForImmediateInvocation(), clang::CXXConstructExpr::CK_Complete, clang::CXXConstructExpr::CK_Delegating, clang::CXXConstructExpr::CK_NonVirtualBase, clang::CXXConstructExpr::CK_VirtualBase, clang::Sema::CompleteConstructorCall(), clang::Sema::Context, clang::CXXTemporaryObjectExpr::Create(), clang::Sema::DefineImplicitDefaultConstructor(), clang::Sema::DiagnoseUseOfDecl(), clang::InitializedEntity::EK_Base, clang::InitializedEntity::EK_Delegating, clang::ExprError(), clang::Sema::findInheritingConstructor(), clang::InitializationSequence::Step::F::FoundDecl, clang::InitializationSequence::Step::F::Function, clang::InitializationSequence::Step::Function, clang::ActionResult< PtrTy, Compress >::get(), clang::ASTContext::getAsArrayType(), clang::ASTContext::getBaseElementType(), clang::InitializedEntity::getBaseSpecifier(), clang::getConstructorInfo(), clang::DeclAccessPair::getDecl(), clang::InitializedEntity::getKind(), clang::QualType::getNonLValueExprType(), clang::ASTContext::getTrivialTypeSourceInfo(), clang::InitializedEntity::getType(), clang::InitializedEntity::getTypeSourceInfo(), clang::InitializationSequence::Step::F::HadMultipleCandidates, hasCopyOrMoveCtorParam(), clang::InitializationKind::IK_Default, clang::InitializationKind::IK_Direct, clang::InitializationKind::IK_DirectList, isExplicitTemporary(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::CXXBaseSpecifier::isVirtual(), clang::Sema::MarkFunctionReferenced(), clang::Sema::MaybeBindToTemporary(), clang::Sema::runWithSufficientStackSpace(), shouldBindAsTemporary(), and clang::InitializationSequence::Step::Type.
Referenced by clang::InitializationSequence::Perform().
|
static |
Definition at line 4112 of file SemaInit.cpp.
References clang::Sema::AddConversionCandidate(), clang::Sema::AddOverloadCandidate(), clang::Sema::AddTemplateConversionCandidate(), clang::Sema::AddTemplateOverloadCandidate(), clang::OverloadCandidateSet::BestViableFunction(), clang::OverloadCandidateSet::clear(), clang::Sema::Context, clang::OverloadCandidateSet::CSK_InitByConstructor, clang::Qualifiers::getAddressSpace(), clang::getConstructorInfo(), clang::Decl::getDeclContext(), clang::Sema::getLangOpts(), clang::QualType::getQualifiers(), clang::FunctionTemplateDecl::getTemplatedDecl(), clang::NamedDecl::getUnderlyingDecl(), hasCopyOrMoveCtorParam(), clang::Initializer, clang::Sema::isCompleteType(), clang::Sema::isInitListConstructor(), and clang::OverloadCandidateSet::setDestAS().
Referenced by CheckCXX98CompatAccessibleCopy(), CopyObject(), and TryConstructorInitialization().
|
static |
Definition at line 4408 of file SemaInit.cpp.
References clang::InitializationSequence::AddAddressOverloadResolutionStep(), clang::Sema::Context, clang::InitializationSequence::FK_AddressOfOverloadFailed, clang::ASTContext::getCanonicalType(), clang::QualType::getUnqualifiedType(), clang::Initializer, clang::Type::isRecordType(), clang::ASTContext::OverloadTy, clang::Sema::ResolveAddressOfOverloadedFunction(), and clang::InitializationSequence::SetFailed().
Referenced by TryReferenceInitialization(), and TryReferenceListInitialization().
|
static |
Whether we should bind a created object as a temporary when initializing the given entity.
Definition at line 6636 of file SemaInit.cpp.
References clang::InitializedEntity::EK_ArrayElement, clang::InitializedEntity::EK_Base, clang::InitializedEntity::EK_Binding, clang::InitializedEntity::EK_BlockElement, clang::InitializedEntity::EK_ComplexElement, clang::InitializedEntity::EK_CompoundLiteralInit, clang::InitializedEntity::EK_Delegating, clang::InitializedEntity::EK_Exception, clang::InitializedEntity::EK_LambdaCapture, clang::InitializedEntity::EK_LambdaToBlockConversionBlockElement, clang::InitializedEntity::EK_Member, clang::InitializedEntity::EK_New, clang::InitializedEntity::EK_Parameter, clang::InitializedEntity::EK_Parameter_CF_Audited, clang::InitializedEntity::EK_ParenAggInitMember, clang::InitializedEntity::EK_RelatedResult, clang::InitializedEntity::EK_Result, clang::InitializedEntity::EK_StmtExprResult, clang::InitializedEntity::EK_TemplateParameter, clang::InitializedEntity::EK_Temporary, clang::InitializedEntity::EK_Variable, clang::InitializedEntity::EK_VectorElement, and clang::InitializedEntity::getKind().
Referenced by CopyObject(), clang::InitializationSequence::Perform(), and PerformConstructorInitialization().
|
static |
Whether the given entity, when initialized with an object created for that initialization, requires destruction.
Definition at line 6670 of file SemaInit.cpp.
References clang::InitializedEntity::EK_ArrayElement, clang::InitializedEntity::EK_Base, clang::InitializedEntity::EK_Binding, clang::InitializedEntity::EK_BlockElement, clang::InitializedEntity::EK_ComplexElement, clang::InitializedEntity::EK_CompoundLiteralInit, clang::InitializedEntity::EK_Delegating, clang::InitializedEntity::EK_Exception, clang::InitializedEntity::EK_LambdaCapture, clang::InitializedEntity::EK_LambdaToBlockConversionBlockElement, clang::InitializedEntity::EK_Member, clang::InitializedEntity::EK_New, clang::InitializedEntity::EK_Parameter, clang::InitializedEntity::EK_Parameter_CF_Audited, clang::InitializedEntity::EK_ParenAggInitMember, clang::InitializedEntity::EK_RelatedResult, clang::InitializedEntity::EK_Result, clang::InitializedEntity::EK_StmtExprResult, clang::InitializedEntity::EK_TemplateParameter, clang::InitializedEntity::EK_Temporary, clang::InitializedEntity::EK_Variable, clang::InitializedEntity::EK_VectorElement, and clang::InitializedEntity::getKind().
Referenced by clang::InitializationSequence::Perform().
|
static |
Determine whether this is an indirect path to a temporary that we are supposed to lifetime-extend along.
Definition at line 8024 of file SemaInit.cpp.
Referenced by clang::Sema::checkInitializerLifetime().
|
static |
Definition at line 7439 of file SemaInit.cpp.
References clang::NamedDecl::getIdentifier(), clang::NamedDecl::getName(), clang::FunctionDecl::getNumParams(), clang::FunctionDecl::getParamDecl(), clang::Type::getPointeeCXXRecordDecl(), clang::FunctionDecl::getReturnType(), clang::ValueDecl::getType(), clang::TypeDecl::getTypeForDecl(), clang::Decl::isInStdNamespace(), clang::Type::isPointerType(), and clang::Type::isReferenceType().
Referenced by handleGslAnnotatedTypes().
|
static |
Definition at line 7406 of file SemaInit.cpp.
References isInStlNamespace().
Referenced by handleGslAnnotatedTypes().
|
static |
Attempt initialization by constructor (C++ [dcl.init]), which enumerates the constructors of the initialized entity and performs overload resolution to select the best.
DestType | The destination class type. |
DestArrayType | The destination type, which is either DestType or a (possibly multidimensional) array of DestType. |
IsListInit | Is this list-initialization? |
IsInitListCopy | Is this non-list-initialization resulting from a list-initialization from {x} where x is the same type as the entity? |
Definition at line 4228 of file SemaInit.cpp.
References clang::InitializationSequence::AddConstructorInitializationStep(), clang::InitializationSequence::AddQualificationConversionStep(), clang::InitializationSequence::AddUserConversionStep(), clang::CXXRecordDecl::allowConstDefaultInit(), clang::Sema::Context, clang::InitializedEntity::EK_Base, clang::InitializedEntity::EK_Delegating, clang::InitializedEntity::EK_LambdaToBlockConversionBlockElement, clang::InitializationSequence::FK_ConstructorOverloadFailed, clang::InitializationSequence::FK_DefaultInitOfConst, clang::InitializationSequence::FK_ExplicitConstructor, clang::InitializationSequence::FK_ListConstructorOverloadFailed, clang::Type::getAs(), clang::RecordType::getDecl(), clang::InitializationSequence::getFailedCandidateSet(), clang::InitListExpr::getInits(), clang::InitializedEntity::getKind(), clang::Sema::getLangOpts(), clang::InitListExpr::getNumInits(), clang::CXXMethodDecl::getParent(), clang::InitializedEntity::getType(), clang::ASTContext::hasSameType(), clang::ASTContext::hasSameUnqualifiedType(), clang::InitializationKind::IK_Copy, clang::InitializationKind::IK_Default, clang::Sema::isCompleteType(), clang::QualType::isConstQualified(), clang::CXXConstructorDecl::isExplicit(), clang::Sema::LookupConstructors(), clang::Sema::LookupDefaultConstructor(), maybeRecoverWithZeroInitialization(), clang::OR_Deleted, clang::OR_No_Viable_Function, ResolveConstructorOverload(), clang::Result, clang::InitializationSequence::RewrapReferenceInitList(), clang::InitializationSequence::SetFailed(), clang::InitializationSequence::setIncompleteTypeFailure(), clang::InitializationSequence::SetOverloadFailure(), clang::OverloadCandidateSet::size(), and clang::VK_PRValue.
Referenced by clang::InitializationSequence::InitializeFrom(), TryDefaultInitialization(), TryListInitialization(), and TryValueInitialization().
|
static |
Attempt default initialization (C++ [dcl.init]p6).
Definition at line 5391 of file SemaInit.cpp.
References clang::InitializationSequence::AddZeroInitializationStep(), clang::Sema::Context, clang::InitializationSequence::FK_DefaultInitOfConst, clang::ASTContext::getBaseElementType(), clang::Sema::getLangOpts(), clang::QualType::getQualifiers(), clang::InitializedEntity::getType(), clang::Qualifiers::hasObjCLifetime(), clang::InitializationKind::IK_Default, clang::QualType::isConstQualified(), clang::Type::isRecordType(), maybeRecoverWithZeroInitialization(), clang::InitializationSequence::SetFailed(), and TryConstructorInitialization().
Referenced by clang::InitializationSequence::InitializeFrom().
|
static |
When initializing from init list via constructor, handle initialization of an object of type std::initializer_list<T>.
Definition at line 4063 of file SemaInit.cpp.
References clang::InitializationSequence::AddStdInitializerListConstructionStep(), clang::Sema::Context, clang::InitializationKind::CreateDirectList(), clang::ASTContext::getConstantArrayType(), clang::ASTContext::getSizeType(), clang::ASTContext::getTypeSize(), clang::InitializedEntity::InitializeTemporary(), clang::Sema::isCompleteType(), clang::Sema::isStdInitializerList(), clang::ArrayType::Normal, clang::InitializationSequence::setIncompleteTypeFailure(), TryListInitialization(), and clang::QualType::withConst().
Referenced by TryListInitialization().
|
static |
Attempt list initialization (C++0x [dcl.init.list])
Definition at line 4543 of file SemaInit.cpp.
References clang::InitializationSequence::AddConversionSequenceStep(), clang::InitializationSequence::AddListInitializationStep(), clang::Sema::Context, clang::InitializationKind::CreateDirect(), clang::StandardConversionSequence::First, clang::InitializationSequence::FK_DesignatedInitForNonAggregate, clang::InitializationSequence::FK_InitListBadDestinationType, clang::InitializationSequence::FK_ListInitializationFailed, clang::InitializationSequence::FK_TooManyInitsForScalar, clang::Type::getAs(), clang::ASTContext::getAsArrayType(), clang::Type::getAsCXXRecordDecl(), clang::InitListExpr::getBeginLoc(), clang::InitListExpr::getInit(), clang::Sema::getLangOpts(), clang::InitListExpr::getLBraceLoc(), clang::InitListExpr::getNumInits(), clang::InitListExpr::getRBraceLoc(), clang::StandardConversionSequence::getToType(), clang::Expr::getType(), clang::InitializedEntity::getType(), clang::InitListExpr::hasDesignatedInit(), clang::ASTContext::hasSameUnqualifiedType(), clang::ICK_Floating_Integral, clang::ICK_Integral_Conversion, clang::ICK_Lvalue_To_Rvalue, clang::InitializationKind::IK_DirectList, clang::InitializationSequence::InitializeFrom(), clang::Type::isAggregateType(), clang::Type::isAnyComplexType(), clang::Type::isBooleanType(), clang::Sema::isCompleteType(), clang::Sema::IsDerivedFrom(), clang::Type::isFloatingType(), clang::Type::isIntegralOrUnscopedEnumerationType(), clang::Expr::isPRValue(), clang::Type::isRecordType(), clang::Type::isReferenceType(), clang::Type::isScalarType(), clang::Sema::isStdInitializerList(), IsStringInit(), clang::Sema::LookupDefaultConstructor(), clang::InitializationSequence::RewrapReferenceInitList(), clang::StandardConversionSequence::Second, clang::StandardConversionSequence::setAsIdentityConversion(), clang::InitializationSequence::SetFailed(), clang::StandardConversionSequence::setFromType(), clang::InitializationSequence::setIncompleteTypeFailure(), clang::ImplicitConversionSequence::setStandard(), clang::StandardConversionSequence::setToType(), SIF_None, clang::ImplicitConversionSequence::Standard, TryConstructorInitialization(), TryInitializerListConstruction(), TryReferenceListInitialization(), and TryValueInitialization().
Referenced by clang::InitializationSequence::InitializeFrom(), TryInitializerListConstruction(), and TryReferenceListInitialization().
|
static |
Definition at line 5984 of file SemaInit.cpp.
References clang::InitializationSequence::AddConversionSequenceStep(), clang::InitializationSequence::AddPassByIndirectCopyRestoreStep(), clang::Sema::Context, clang::StandardConversionSequence::First, clang::ASTContext::getAsArrayType(), clang::InitializedEntity::getDecl(), clang::ASTContext::getPointerType(), clang::InitializedEntity::getType(), clang::ICK_Array_To_Pointer, clang::ICK_Lvalue_To_Rvalue, clang::Initializer, clang::Sema::isObjCWritebackConversion(), clang::Decl::OBJC_TQ_Out, clang::StandardConversionSequence::setAsIdentityConversion(), clang::ImplicitConversionSequence::setStandard(), and clang::ImplicitConversionSequence::Standard.
Referenced by clang::InitializationSequence::InitializeFrom().
|
static |
Definition at line 6031 of file SemaInit.cpp.
References clang::InitializationSequence::AddOCLSamplerInitStep(), clang::Sema::Context, clang::Sema::getLangOpts(), clang::Initializer, and clang::Type::isSamplerT().
Referenced by clang::InitializationSequence::InitializeFrom().
|
static |
Definition at line 6049 of file SemaInit.cpp.
References clang::InitializationSequence::AddOCLZeroOpaqueTypeStep(), clang::Sema::getLangOpts(), clang::Sema::getOpenCLOptions(), clang::Initializer, clang::OpenCLOptions::isAvailableOption(), clang::Type::isEventT(), clang::Type::isOCLIntelSubgroupAVCType(), clang::Type::isQueueT(), and IsZeroInitializer().
Referenced by clang::InitializationSequence::InitializeFrom().
|
static |
Definition at line 5429 of file SemaInit.cpp.
References clang::InitializationSequence::AddParenthesizedListInitStep(), clang::CXXRecordDecl::bases(), clang::Sema::BuildCXXDefaultInitExpr(), clang::Sema::checkInitializerLifetime(), clang::Sema::Context, clang::CXXParenListInitExpr::Create(), clang::InitializationKind::CreateForInit(), clang::InitializationKind::CreateValue(), clang::Sema::Diag(), clang::InitializationSequence::Diagnose(), clang::InitializationSequence::Failed(), clang::RecordDecl::fields(), clang::InitializationSequence::FK_ParenthesizedListInitFailed, clang::ActionResult< PtrTy, Compress >::get(), clang::Type::getAs(), clang::ASTContext::getAsArrayType(), clang::ASTContext::getAsConstantArrayType(), clang::Sema::getASTContext(), clang::ASTContext::getAsVariableArrayType(), clang::SourceRange::getBegin(), clang::Stmt::getBeginLoc(), clang::ASTContext::getConstantArrayType(), clang::ArrayType::getElementType(), clang::SourceRange::getEnd(), clang::Stmt::getEndLoc(), clang::Expr::getExprLoc(), clang::Decl::getLocation(), clang::Stmt::getSourceRange(), clang::ValueDecl::getType(), clang::InitializedEntity::getType(), clang::FieldDecl::hasInClassInitializer(), clang::InitializedEntity::InitializeBase(), clang::InitializedEntity::InitializeElement(), clang::InitializedEntity::InitializeMemberFromParenAggInit(), clang::Type::isArrayType(), clang::Type::isIncompleteArrayType(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::QualType::isNull(), clang::Type::isReferenceType(), clang::Type::isUnionType(), clang::FieldDecl::isUnnamedBitfield(), clang::ArrayType::Normal, clang::InitializationSequence::NormalSequence, clang::InitializationSequence::Perform(), clang::Result, clang::InitializationSequence::SetFailed(), and clang::InitializationSequence::setSequenceKind().
Referenced by clang::InitializationSequence::Diagnose(), clang::InitializationSequence::InitializeFrom(), and clang::InitializationSequence::Perform().
|
static |
Attempt reference initialization (C++0x [dcl.init.ref])
Definition at line 4945 of file SemaInit.cpp.
References clang::Type::castAs(), clang::Sema::Context, clang::Sema::getCompletedType(), clang::InitializedEntity::getType(), clang::ASTContext::getUnqualifiedArrayType(), clang::Initializer, ResolveOverloadedFunctionForReferenceBinding(), and TryReferenceInitializationCore().
Referenced by clang::InitializationSequence::InitializeFrom().
|
static |
Reference initialization without resolving overloaded functions.
We also can get here in C if we call a builtin which is declared as a function with a parameter of reference type (such as __builtin_va_end()).
Definition at line 4982 of file SemaInit.cpp.
References clang::Qualifiers::addAddressSpace(), clang::InitializationSequence::AddConversionSequenceStep(), clang::InitializationSequence::AddDerivedToBaseCastStep(), clang::InitializationSequence::AddExtraneousCopyToTemporary(), clang::InitializationSequence::AddFunctionReferenceConversionStep(), clang::InitializationSequence::AddObjCObjectConversionStep(), clang::InitializationSequence::AddQualificationConversionStep(), clang::InitializationSequence::AddReferenceBindingStep(), CheckCXX98CompatAccessibleCopy(), clang::Sema::CompareReferenceRelationship(), clang::Sema::Context, clang::Default, clang::OverloadCandidateSet::empty(), clang::InitializationSequence::FK_AddressOfOverloadFailed, clang::InitializationSequence::FK_NonConstLValueReferenceBindingToBitfield, clang::InitializationSequence::FK_NonConstLValueReferenceBindingToMatrixElement, clang::InitializationSequence::FK_NonConstLValueReferenceBindingToTemporary, clang::InitializationSequence::FK_NonConstLValueReferenceBindingToUnrelated, clang::InitializationSequence::FK_NonConstLValueReferenceBindingToVectorElement, clang::InitializationSequence::FK_ReferenceAddrspaceMismatchTemporary, clang::InitializationSequence::FK_ReferenceInitDropsQualifiers, clang::InitializationSequence::FK_ReferenceInitFailed, clang::InitializationSequence::FK_ReferenceInitOverloadFailed, clang::InitializationSequence::FK_RValueReferenceBindingToLValue, clang::Qualifiers::getAddressSpace(), clang::ASTContext::getCanonicalType(), clang::Qualifiers::getCVRQualifiers(), clang::InitializationSequence::getFailedCandidateSet(), clang::Sema::getLangOpts(), clang::ASTContext::getQualifiedType(), clang::QualType::getQualifiers(), clang::InitializedEntity::getType(), clang::Qualifiers::hasAddressSpace(), clang::Qualifiers::hasConst(), clang::ASTContext::hasSameType(), clang::Qualifiers::hasVolatile(), clang::Initializer, clang::InitializedEntity::InitializeTemporary(), clang::Qualifiers::isAddressSpaceSupersetOf(), clang::Type::isArrayType(), clang::ImplicitConversionSequence::isBad(), clang::Type::isFunctionType(), clang::Expr::Classification::isLValue(), clang::Type::isLValueReferenceType(), isNonReferenceableGLValue(), clang::Expr::Classification::isPRValue(), clang::Type::isRecordType(), clang::Expr::Classification::isRValue(), isRValueRef(), clang::Expr::Classification::isXValue(), clang::OR_No_Viable_Function, clang::OR_Success, clang::ASTContext::OverloadTy, clang::Sema::Ref_Compatible, clang::Sema::Ref_Incompatible, clang::Sema::Ref_Related, clang::Qualifiers::removeAddressSpace(), clang::InitializationSequence::SetFailed(), clang::InitializationSequence::SetOverloadFailure(), clang::Sema::TryImplicitConversion(), TryRefInitWithConversionFunction(), clang::VK_LValue, clang::VK_PRValue, clang::VK_XValue, and clang::Qualifiers::withoutAddressSpace().
Referenced by TryReferenceInitialization(), and TryReferenceListInitialization().
|
static |
Attempt list initialization of a reference.
Definition at line 4452 of file SemaInit.cpp.
References clang::InitializationSequence::AddQualificationConversionStep(), clang::InitializationSequence::AddReferenceBindingStep(), clang::Type::castAs(), clang::Sema::CompareReferenceRelationship(), clang::Sema::Context, clang::InitializedEntity::EK_CompoundLiteralInit, clang::InitializationSequence::FK_NonConstLValueReferenceBindingToTemporary, clang::InitializationSequence::FK_ReferenceBindingToInitList, clang::InitializationSequence::FK_ReferenceInitDropsQualifiers, clang::Sema::getCompletedType(), clang::InitListExpr::getInit(), clang::InitializedEntity::getKind(), clang::Sema::getLangOpts(), clang::InitListExpr::getNumInits(), clang::ASTContext::getQualifiedType(), clang::Expr::getType(), clang::InitializedEntity::getType(), clang::ASTContext::getUnqualifiedArrayType(), clang::Qualifiers::hasAddressSpace(), clang::Qualifiers::hasConst(), clang::Qualifiers::hasVolatile(), clang::Initializer, clang::InitializedEntity::InitializeTemporary(), clang::Qualifiers::isAddressSpaceSupersetOf(), clang::Type::isRValueReferenceType(), clang::Sema::Ref_Related, ResolveOverloadedFunctionForReferenceBinding(), clang::InitializationSequence::RewrapReferenceInitList(), clang::InitializationSequence::SetFailed(), clang::InitializationSequence::step_begin(), clang::InitializationSequence::step_end(), TryListInitialization(), TryReferenceInitializationCore(), clang::VK_LValue, clang::VK_XValue, and clang::Qualifiers::withoutAddressSpace().
Referenced by TryListInitialization().
|
static |
Try a reference initialization that involves calling a conversion function.
Definition at line 4760 of file SemaInit.cpp.
References clang::Sema::AddConversionCandidate(), clang::InitializationSequence::AddConversionSequenceStep(), clang::InitializationSequence::AddDerivedToBaseCastStep(), clang::InitializationSequence::AddFunctionReferenceConversionStep(), clang::InitializationSequence::AddObjCObjectConversionStep(), clang::Sema::AddOverloadCandidate(), clang::InitializationSequence::AddQualificationConversionStep(), clang::InitializationSequence::AddReferenceBindingStep(), clang::Sema::AddTemplateConversionCandidate(), clang::Sema::AddTemplateOverloadCandidate(), clang::InitializationSequence::AddUserConversionStep(), clang::OverloadCandidateSet::BestViableFunction(), clang::Type::castAs(), clang::OverloadCandidateSet::clear(), clang::Sema::CompareReferenceRelationship(), clang::Sema::Context, clang::OverloadCandidateSet::CSK_InitByUserDefinedConversion, clang::Type::getAs(), clang::getConstructorInfo(), clang::CXXConversionDecl::getConversionType(), clang::RecordType::getDecl(), clang::Decl::getDeclContext(), clang::InitializationSequence::getFailedCandidateSet(), clang::QualType::getNonLValueExprType(), clang::ASTContext::getQualifiedType(), clang::QualType::getQualifiers(), clang::FunctionTemplateDecl::getTemplatedDecl(), clang::StandardConversionSequence::getToType(), clang::InitializedEntity::getType(), clang::QualType::getUnqualifiedType(), clang::CXXRecordDecl::getVisibleConversionFunctions(), clang::ASTContext::hasSameType(), clang::Initializer, clang::Sema::isCompleteType(), clang::Decl::isInvalidDecl(), clang::Type::isLValueReferenceType(), clang::Sema::LookupConstructors(), clang::OR_No_Viable_Function, clang::OR_Success, clang::Sema::Ref_Incompatible, clang::Result, clang::ImplicitConversionSequence::setStandard(), clang::OverloadCandidateSet::size(), clang::ImplicitConversionSequence::Standard, clang::VK_LValue, clang::VK_PRValue, and clang::VK_XValue.
Referenced by TryReferenceInitializationCore().
|
static |
Attempt character array initialization from a string literal (C++ [dcl.init.string], C99 6.7.8).
Definition at line 5304 of file SemaInit.cpp.
References clang::InitializationSequence::AddStringInitStep(), and clang::InitializedEntity::getType().
Referenced by clang::InitializationSequence::InitializeFrom().
|
static |
Attempt a user-defined conversion between two types (C++ [dcl.init]), which enumerates all conversion functions and performs overload resolution to select the best.
Definition at line 5681 of file SemaInit.cpp.
References clang::Sema::AddConversionCandidate(), clang::InitializationSequence::AddConversionSequenceStep(), clang::InitializationSequence::AddFinalCopy(), clang::Sema::AddOverloadCandidate(), clang::InitializationSequence::AddQualificationConversionStep(), clang::Sema::AddTemplateConversionCandidate(), clang::Sema::AddTemplateOverloadCandidate(), clang::InitializationSequence::AddUserConversionStep(), clang::OverloadCandidateSet::BestViableFunction(), clang::OverloadCandidateSet::clear(), clang::Sema::Context, clang::OverloadCandidateSet::CSK_InitByUserDefinedConversion, clang::InitializationSequence::FK_UserConversionOverloadFailed, clang::Qualifiers::getAddressSpace(), clang::Type::getAs(), clang::getConstructorInfo(), clang::Decl::getDeclContext(), clang::InitializationSequence::getFailedCandidateSet(), clang::Sema::getLangOpts(), clang::QualType::getQualifiers(), clang::FunctionTemplateDecl::getTemplatedDecl(), clang::QualType::getUnqualifiedType(), clang::CXXRecordDecl::getVisibleConversionFunctions(), clang::QualType::hasQualifiers(), clang::ASTContext::hasSameType(), clang::ASTContext::hasSameUnqualifiedType(), clang::InitializationKind::IK_Copy, clang::Initializer, clang::Sema::isCompleteType(), clang::Type::isRecordType(), clang::Type::isReferenceType(), clang::Sema::LookupConstructors(), clang::OR_Deleted, clang::Result, clang::OverloadCandidateSet::setDestAS(), clang::InitializationSequence::SetOverloadFailure(), clang::ImplicitConversionSequence::setStandard(), clang::OverloadCandidateSet::size(), clang::ImplicitConversionSequence::Standard, and clang::VK_PRValue.
Referenced by clang::InitializationSequence::InitializeFrom(), TryImplicitConversion(), and TryListConversion().
|
static |
Attempt value initialization (C++ [dcl.init]p7).
Definition at line 5313 of file SemaInit.cpp.
References clang::InitializationSequence::AddZeroInitializationStep(), clang::Sema::Context, clang::InitializationSequence::FK_TooManyInitsForReference, clang::Type::getAs(), clang::ASTContext::getBaseElementType(), clang::CXXConstructorDecl::getCanonicalDecl(), clang::Sema::getLangOpts(), clang::InitListExpr::getNumInits(), clang::InitializedEntity::getType(), clang::FunctionDecl::isDefaulted(), clang::FunctionDecl::isDeleted(), clang::Sema::LookupDefaultConstructor(), clang::InitializationSequence::SetFailed(), and TryConstructorInitialization().
Referenced by clang::InitializationSequence::InitializeFrom(), and TryListInitialization().
|
static |
Fix a compound literal initializing an array so it's correctly marked as an rvalue.
Definition at line 193 of file SemaInit.cpp.
References clang::Expr::setValueKind(), and clang::VK_PRValue.
Referenced by clang::InitializationSequence::Perform().
Update the type of a string literal, including any surrounding parentheses, to match the type of the object which it is initializing.
Definition at line 168 of file SemaInit.cpp.
References clang::Expr::setType(), clang::Expr::setValueKind(), and clang::VK_PRValue.
Referenced by CheckStringInit().
|
static |
Definition at line 7559 of file SemaInit.cpp.
References implicitObjectParamIsLifetimeBound(), visitLocalsRetainedByInitializer(), and visitLocalsRetainedByReferenceBinding().
Referenced by visitLocalsRetainedByInitializer(), and visitLocalsRetainedByReferenceBinding().
|
static |
Visit the locals that would be reachable through an object initialized by the prvalue expression Init
.
Definition at line 7736 of file SemaInit.cpp.
References clang::C, clang::LambdaCapture::capturesVariable(), clang::RecordDecl::fields(), clang::Type::getAsCXXRecordDecl(), clang::InitListExpr::getInit(), clang::InitListExpr::getInitializedFieldInUnion(), clang::InitListExpr::getNumInits(), clang::ValueDecl::getType(), clang::Expr::getType(), handleGslAnnotatedTypes(), clang::Type::isArrayType(), clang::QualType::isConstQualified(), clang::Expr::isGLValue(), clang::Type::isReferenceType(), clang::InitListExpr::isTransparent(), clang::TagDecl::isUnion(), isVarOnPath(), visitLifetimeBoundArguments(), visitLocalsRetainedByInitializer(), and visitLocalsRetainedByReferenceBinding().
Referenced by clang::Sema::checkInitializerLifetime(), handleGslAnnotatedTypes(), visitLifetimeBoundArguments(), visitLocalsRetainedByInitializer(), and visitLocalsRetainedByReferenceBinding().
|
static |
Visit the locals that would be reachable through a reference bound to the glvalue expression Init
.
Definition at line 7608 of file SemaInit.cpp.
References clang::C, clang::InitListExpr::getInit(), clang::ValueDecl::getType(), handleGslAnnotatedTypes(), clang::Type::isReferenceType(), clang::InitListExpr::isTransparent(), isVarOnPath(), visitLifetimeBoundArguments(), visitLocalsRetainedByInitializer(), and visitLocalsRetainedByReferenceBinding().
Referenced by clang::Sema::checkInitializerLifetime(), handleGslAnnotatedTypes(), visitLifetimeBoundArguments(), visitLocalsRetainedByInitializer(), and visitLocalsRetainedByReferenceBinding().
|
static |
Warn that Entity
was of scalar type and was initialized by a single-element braced initializer list.
Definition at line 1170 of file SemaInit.cpp.
References clang::FixItHint::CreateRemoval(), clang::Sema::Diag(), clang::InitializedEntity::EK_ArrayElement, clang::InitializedEntity::EK_Base, clang::InitializedEntity::EK_Binding, clang::InitializedEntity::EK_BlockElement, clang::InitializedEntity::EK_ComplexElement, clang::InitializedEntity::EK_CompoundLiteralInit, clang::InitializedEntity::EK_Delegating, clang::InitializedEntity::EK_Exception, clang::InitializedEntity::EK_LambdaCapture, clang::InitializedEntity::EK_LambdaToBlockConversionBlockElement, clang::InitializedEntity::EK_Member, clang::InitializedEntity::EK_New, clang::InitializedEntity::EK_Parameter, clang::InitializedEntity::EK_Parameter_CF_Audited, clang::InitializedEntity::EK_ParenAggInitMember, clang::InitializedEntity::EK_RelatedResult, clang::InitializedEntity::EK_Result, clang::InitializedEntity::EK_StmtExprResult, clang::InitializedEntity::EK_TemplateParameter, clang::InitializedEntity::EK_Temporary, clang::InitializedEntity::EK_Variable, clang::InitializedEntity::EK_VectorElement, clang::SourceRange::getBegin(), clang::SourceRange::getEnd(), clang::InitializedEntity::getKind(), clang::InitializedEntity::getParent(), clang::InitializedEntity::getType(), clang::Sema::inTemplateInstantiation(), and clang::Type::isSizelessBuiltinType().