clang 20.0.0git
Classes | Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
clang::QualType Class Reference

A (possibly-)qualified type. More...

#include "clang/AST/Type.h"

Classes

class  StreamedQualTypeHelper
 

Public Types

enum class  NonConstantStorageReason { MutableField , NonConstNonReferenceType , NonTrivialCtor , NonTrivialDtor }
 
enum  PrimitiveDefaultInitializeKind { PDIK_Trivial , PDIK_ARCStrong , PDIK_ARCWeak , PDIK_Struct }
 
enum  PrimitiveCopyKind {
  PCK_Trivial , PCK_VolatileTrivial , PCK_ARCStrong , PCK_ARCWeak ,
  PCK_Struct
}
 
enum  DestructionKind {
  DK_none , DK_cxx_destructor , DK_objc_strong_lifetime , DK_objc_weak_lifetime ,
  DK_nontrivial_c_struct
}
 

Public Member Functions

 QualType ()=default
 
 QualType (const Type *Ptr, unsigned Quals)
 
 QualType (const ExtQuals *Ptr, unsigned Quals)
 
unsigned getLocalFastQualifiers () const
 
void setLocalFastQualifiers (unsigned Quals)
 
bool UseExcessPrecision (const ASTContext &Ctx)
 
const TypegetTypePtr () const
 Retrieves a pointer to the underlying (unqualified) type.
 
const TypegetTypePtrOrNull () const
 
const IdentifierInfogetBaseTypeIdentifier () const
 Retrieves a pointer to the name of the base type.
 
SplitQualType split () const
 Divides a QualType into its unqualified type and a set of local qualifiers.
 
void * getAsOpaquePtr () const
 
const Typeoperator* () const
 
const Typeoperator-> () const
 
bool isCanonical () const
 
bool isCanonicalAsParam () const
 
bool isNull () const
 Return true if this QualType doesn't point to a type yet.
 
bool isReferenceable () const
 
bool isLocalConstQualified () const
 Determine whether this particular QualType instance has the "const" qualifier set, without looking through typedefs that may have added "const" at a different level.
 
bool isConstQualified () const
 Determine whether this type is const-qualified.
 
std::optional< NonConstantStorageReasonisNonConstantStorage (const ASTContext &Ctx, bool ExcludeCtor, bool ExcludeDtor)
 Determine whether instances of this type can be placed in immutable storage.
 
bool isConstantStorage (const ASTContext &Ctx, bool ExcludeCtor, bool ExcludeDtor)
 
bool isLocalRestrictQualified () const
 Determine whether this particular QualType instance has the "restrict" qualifier set, without looking through typedefs that may have added "restrict" at a different level.
 
bool isRestrictQualified () const
 Determine whether this type is restrict-qualified.
 
bool isLocalVolatileQualified () const
 Determine whether this particular QualType instance has the "volatile" qualifier set, without looking through typedefs that may have added "volatile" at a different level.
 
bool isVolatileQualified () const
 Determine whether this type is volatile-qualified.
 
bool hasLocalQualifiers () const
 Determine whether this particular QualType instance has any qualifiers, without looking through any typedefs that might add qualifiers at a different level.
 
bool hasQualifiers () const
 Determine whether this type has any qualifiers.
 
bool hasLocalNonFastQualifiers () const
 Determine whether this particular QualType instance has any "non-fast" qualifiers, e.g., those that are stored in an ExtQualType instance.
 
Qualifiers getLocalQualifiers () const
 Retrieve the set of qualifiers local to this particular QualType instance, not including any qualifiers acquired through typedefs or other sugar.
 
Qualifiers getQualifiers () const
 Retrieve the set of qualifiers applied to this type.
 
unsigned getLocalCVRQualifiers () const
 Retrieve the set of CVR (const-volatile-restrict) qualifiers local to this particular QualType instance, not including any qualifiers acquired through typedefs or other sugar.
 
unsigned getCVRQualifiers () const
 Retrieve the set of CVR (const-volatile-restrict) qualifiers applied to this type.
 
bool isConstant (const ASTContext &Ctx) const
 
bool isPODType (const ASTContext &Context) const
 Determine whether this is a Plain Old Data (POD) type (C++ 3.9p10).
 
bool isCXX98PODType (const ASTContext &Context) const
 Return true if this is a POD type according to the rules of the C++98 standard, regardless of the current compilation's language.
 
bool isCXX11PODType (const ASTContext &Context) const
 Return true if this is a POD type according to the more relaxed rules of the C++11 standard, regardless of the current compilation's language.
 
bool isTrivialType (const ASTContext &Context) const
 Return true if this is a trivial type per (C++0x [basic.types]p9)
 
bool isTriviallyCopyableType (const ASTContext &Context) const
 Return true if this is a trivially copyable type (C++0x [basic.types]p9)
 
bool isBitwiseCloneableType (const ASTContext &Context) const
 Return true if the type is safe to bitwise copy using memcpy/memmove.
 
bool isTriviallyCopyConstructibleType (const ASTContext &Context) const
 Return true if this is a trivially copyable type.
 
bool isTriviallyRelocatableType (const ASTContext &Context) const
 Return true if this is a trivially relocatable type.
 
bool mayBeDynamicClass () const
 Returns true if it is a class and it might be dynamic.
 
bool mayBeNotDynamicClass () const
 Returns true if it is not a class or if the class might not be dynamic.
 
bool isWebAssemblyReferenceType () const
 Returns true if it is a WebAssembly Reference Type.
 
bool isWebAssemblyExternrefType () const
 Returns true if it is a WebAssembly Externref Type.
 
bool isWebAssemblyFuncrefType () const
 Returns true if it is a WebAssembly Funcref Type.
 
void addConst ()
 Add the const type qualifier to this QualType.
 
QualType withConst () const
 
void addVolatile ()
 Add the volatile type qualifier to this QualType.
 
QualType withVolatile () const
 
void addRestrict ()
 Add the restrict qualifier to this QualType.
 
QualType withRestrict () const
 
QualType withCVRQualifiers (unsigned CVR) const
 
void addFastQualifiers (unsigned TQs)
 
void removeLocalConst ()
 
void removeLocalVolatile ()
 
void removeLocalRestrict ()
 
void removeLocalFastQualifiers ()
 
void removeLocalFastQualifiers (unsigned Mask)
 
QualType withFastQualifiers (unsigned TQs) const
 
QualType withExactLocalFastQualifiers (unsigned TQs) const
 
QualType withoutLocalFastQualifiers () const
 
QualType getCanonicalType () const
 
QualType getLocalUnqualifiedType () const
 Return this type with all of the instance-specific qualifiers removed, but without removing any qualifiers that may have been applied through typedefs.
 
QualType getUnqualifiedType () const
 Retrieve the unqualified variant of the given type, removing as little sugar as possible.
 
SplitQualType getSplitUnqualifiedType () const
 Retrieve the unqualified variant of the given type, removing as little sugar as possible.
 
bool isMoreQualifiedThan (QualType Other) const
 Determine whether this type is more qualified than the other given type, requiring exact equality for non-CVR qualifiers.
 
bool isAtLeastAsQualifiedAs (QualType Other) const
 Determine whether this type is at least as qualified as the other given type, requiring exact equality for non-CVR qualifiers.
 
QualType getNonReferenceType () const
 If Type is a reference type (e.g., const int&), returns the type that the reference refers to ("const int").
 
QualType getNonLValueExprType (const ASTContext &Context) const
 Determine the type of a (typically non-lvalue) expression with the specified result type.
 
QualType getNonPackExpansionType () const
 Remove an outer pack expansion type (if any) from this type.
 
QualType getDesugaredType (const ASTContext &Context) const
 Return the specified type with any "sugar" removed from the type.
 
SplitQualType getSplitDesugaredType () const
 
QualType getSingleStepDesugaredType (const ASTContext &Context) const
 Return the specified type with one level of "sugar" removed from the type.
 
QualType IgnoreParens () const
 Returns the specified type after dropping any outer-level parentheses.
 
std::string getAsString () const
 
std::string getAsString (const PrintingPolicy &Policy) const
 
void print (raw_ostream &OS, const PrintingPolicy &Policy, const Twine &PlaceHolder=Twine(), unsigned Indentation=0) const
 
void getAsStringInternal (std::string &Str, const PrintingPolicy &Policy) const
 
StreamedQualTypeHelper stream (const PrintingPolicy &Policy, const Twine &PlaceHolder=Twine(), unsigned Indentation=0) const
 
void dump (const char *s) const
 
void dump () const
 
void dump (llvm::raw_ostream &OS, const ASTContext &Context) const
 
void Profile (llvm::FoldingSetNodeID &ID) const
 
bool hasAddressSpace () const
 Check if this type has any address space qualifier.
 
LangAS getAddressSpace () const
 Return the address space of this type.
 
bool isAddressSpaceOverlapping (QualType T) const
 Returns true if address space qualifiers overlap with T address space qualifiers.
 
Qualifiers::GC getObjCGCAttr () const
 Returns gc attribute of this type.
 
bool isObjCGCWeak () const
 true when Type is objc's weak.
 
bool isObjCGCStrong () const
 true when Type is objc's strong.
 
Qualifiers::ObjCLifetime getObjCLifetime () const
 Returns lifetime attribute of this type.
 
bool hasNonTrivialObjCLifetime () const
 
bool hasStrongOrWeakObjCLifetime () const
 
bool isNonWeakInMRRWithObjCWeak (const ASTContext &Context) const
 
PointerAuthQualifier getPointerAuth () const
 
PrimitiveDefaultInitializeKind isNonTrivialToPrimitiveDefaultInitialize () const
 Functions to query basic properties of non-trivial C struct types.
 
PrimitiveCopyKind isNonTrivialToPrimitiveCopy () const
 Check if this is a non-trivial type that would cause a C struct transitively containing this type to be non-trivial to copy and return the kind.
 
PrimitiveCopyKind isNonTrivialToPrimitiveDestructiveMove () const
 Check if this is a non-trivial type that would cause a C struct transitively containing this type to be non-trivial to destructively move and return the kind.
 
DestructionKind isDestructedType () const
 Returns a nonzero value if objects of this type require non-trivial work to clean up after.
 
bool hasNonTrivialToPrimitiveDefaultInitializeCUnion () const
 Check if this is or contains a C union that is non-trivial to default-initialize, which is a union that has a member that is non-trivial to default-initialize.
 
bool hasNonTrivialToPrimitiveDestructCUnion () const
 Check if this is or contains a C union that is non-trivial to destruct, which is a union that has a member that is non-trivial to destruct.
 
bool hasNonTrivialToPrimitiveCopyCUnion () const
 Check if this is or contains a C union that is non-trivial to copy, which is a union that has a member that is non-trivial to copy.
 
bool isCForbiddenLValueType () const
 Determine whether expressions of the given type are forbidden from being lvalues in C.
 
QualType substObjCTypeArgs (ASTContext &ctx, ArrayRef< QualType > typeArgs, ObjCSubstitutionContext context) const
 Substitute type arguments for the Objective-C type parameters used in the subject type.
 
QualType substObjCMemberType (QualType objectType, const DeclContext *dc, ObjCSubstitutionContext context) const
 Substitute type arguments from an object type for the Objective-C type parameters used in the subject type.
 
QualType stripObjCKindOfType (const ASTContext &ctx) const
 Strip Objective-C "__kindof" types from the given type.
 
QualType getAtomicUnqualifiedType () const
 Remove all qualifiers including _Atomic.
 

Static Public Member Functions

static QualType getFromOpaquePtr (const void *Ptr)
 
static std::string getAsString (SplitQualType split, const PrintingPolicy &Policy)
 
static std::string getAsString (const Type *ty, Qualifiers qs, const PrintingPolicy &Policy)
 
static void print (SplitQualType split, raw_ostream &OS, const PrintingPolicy &policy, const Twine &PlaceHolder, unsigned Indentation=0)
 
static void print (const Type *ty, Qualifiers qs, raw_ostream &OS, const PrintingPolicy &policy, const Twine &PlaceHolder, unsigned Indentation=0)
 
static void getAsStringInternal (SplitQualType split, std::string &out, const PrintingPolicy &policy)
 
static void getAsStringInternal (const Type *ty, Qualifiers qs, std::string &out, const PrintingPolicy &policy)
 

Friends

class QualifierCollector
 
bool operator== (const QualType &LHS, const QualType &RHS)
 Indicate whether the specified types and qualifiers are identical.
 
bool operator!= (const QualType &LHS, const QualType &RHS)
 
bool operator< (const QualType &LHS, const QualType &RHS)
 

Detailed Description

A (possibly-)qualified type.

For efficiency, we don't store CV-qualified types as nodes on their own: instead each reference to a type stores the qualifiers. This greatly reduces the number of nodes we need to allocate for types (for example we only need one for 'int', 'const int', 'volatile int', 'const volatile int', etc).

As an added efficiency bonus, instead of making this a pair, we just store the two bits we care about in the low bits of the pointer. To handle the packing/unpacking, we make QualType be a simple wrapper class that acts like a smart pointer. A third bit indicates whether there are extended qualifiers present, in which case the pointer points to a special structure.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/StaticAnalyzer/Core/RegionStore.cpp.

Definition at line 941 of file Type.h.

Member Enumeration Documentation

◆ DestructionKind

Enumerator
DK_none 
DK_cxx_destructor 
DK_objc_strong_lifetime 
DK_objc_weak_lifetime 
DK_nontrivial_c_struct 

Definition at line 1530 of file Type.h.

◆ NonConstantStorageReason

Enumerator
MutableField 
NonConstNonReferenceType 
NonTrivialCtor 
NonTrivialDtor 

Definition at line 1025 of file Type.h.

◆ PrimitiveCopyKind

Enumerator
PCK_Trivial 

The type does not fall into any of the following categories.

Note that this case is zero-valued so that values of this enum can be used as a boolean condition for non-triviality.

PCK_VolatileTrivial 

The type would be trivial except that it is volatile-qualified.

Types that fall into one of the other non-trivial cases may additionally be volatile-qualified.

PCK_ARCStrong 

The type is an Objective-C retainable pointer type that is qualified with the ARC __strong qualifier.

PCK_ARCWeak 

The type is an Objective-C retainable pointer type that is qualified with the ARC __weak qualifier.

PCK_Struct 

The type is a struct containing a field whose type is neither PCK_Trivial nor PCK_VolatileTrivial.

Note that a C++ struct type does not necessarily match this; C++ copying semantics are too complex to express here, in part because they depend on the exact constructor or assignment operator that is chosen by overload resolution to do the copy.

Definition at line 1489 of file Type.h.

◆ PrimitiveDefaultInitializeKind

Enumerator
PDIK_Trivial 

The type does not fall into any of the following categories.

Note that this case is zero-valued so that values of this enum can be used as a boolean condition for non-triviality.

PDIK_ARCStrong 

The type is an Objective-C retainable pointer type that is qualified with the ARC __strong qualifier.

PDIK_ARCWeak 

The type is an Objective-C retainable pointer type that is qualified with the ARC __weak qualifier.

PDIK_Struct 

The type is a struct containing a field whose type is not PCK_Trivial.

Definition at line 1463 of file Type.h.

Constructor & Destructor Documentation

◆ QualType() [1/3]

clang::QualType::QualType ( )
default

Referenced by getLocalUnqualifiedType().

◆ QualType() [2/3]

clang::QualType::QualType ( const Type Ptr,
unsigned  Quals 
)
inline

Definition at line 965 of file Type.h.

◆ QualType() [3/3]

clang::QualType::QualType ( const ExtQuals Ptr,
unsigned  Quals 
)
inline

Definition at line 966 of file Type.h.

Member Function Documentation

◆ addConst()

void clang::QualType::addConst ( )
inline

◆ addFastQualifiers()

void clang::QualType::addFastQualifiers ( unsigned  TQs)
inline

Definition at line 1190 of file Type.h.

References clang::Qualifiers::FastMask.

Referenced by addConst(), addRestrict(), and addVolatile().

◆ addRestrict()

void clang::QualType::addRestrict ( )
inline

Add the restrict qualifier to this QualType.

Definition at line 1179 of file Type.h.

References addFastQualifiers(), and clang::Qualifiers::Restrict.

Referenced by emitReduceInitFunction(), and clang::CXXMethodDecl::getThisType().

◆ addVolatile()

void clang::QualType::addVolatile ( )
inline

Add the volatile type qualifier to this QualType.

Definition at line 1171 of file Type.h.

References addFastQualifiers(), and clang::Qualifiers::Volatile.

Referenced by getSubobjectType(), and clang::Sema::LookupSpecialMember().

◆ dump() [1/3]

LLVM_DUMP_METHOD void QualType::dump ( ) const

Definition at line 184 of file ASTDumper.cpp.

References clang::ASTNodeTraverser< Derived, NodeDelegateType >::Visit().

Referenced by dump().

◆ dump() [2/3]

void QualType::dump ( const char *  s) const

Definition at line 178 of file ASTDumper.cpp.

References dump().

Referenced by clang::CanQual< T >::dump().

◆ dump() [3/3]

LLVM_DUMP_METHOD void QualType::dump ( llvm::raw_ostream &  OS,
const ASTContext Context 
) const

◆ getAddressSpace()

LangAS clang::QualType::getAddressSpace ( ) const
inline

Return the address space of this type.

Definition at line 7881 of file Type.h.

Referenced by clang::Sema::ActOnCXXDelete(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::AddInitializerToDecl(), AdjustAddressSpaceForBuiltinOperandType(), clang::Sema::BuildAtomicExpr(), clang::Sema::BuildCallExpr(), clang::Sema::BuildCompoundLiteralExpr(), clang::Sema::CheckAllocatedType(), clang::Sema::CheckAssignmentConstraints(), clang::Sema::CheckCompareOperands(), clang::CodeGen::CodeGenTypes::ConvertType(), DeduceTemplateArgumentsByTypeMatch(), diagnoseOpenCLTypes(), clang::CodeGen::CodeGenModule::GenKernelArgMetadata(), clang::CodeGen::CGOpenMPRuntimeGPU::getAddressOfLocalVariable(), clang::CodeGen::CodeGenModule::GetAddrOfGlobalVar(), clang::CodeGen::CodeGenModule::GetAddrOfMSGuidDecl(), clang::CodeGen::CodeGenModule::GetAddrOfTemplateParamObject(), clang::CodeGen::CodeGenModule::GetAddrOfUnnamedGlobalConstantDecl(), clang::ASTContext::getAddrSpaceQualType(), getLambdaType(), getOpenCLKernelParameterType(), clang::CodeGen::CodeGenModule::getOrCreateStaticVarDecl(), clang::ASTContext::getTargetNullPointerValue(), IsAddressSpaceConversion(), clang::Expr::isNullPointerConstant(), clang::isValidSwiftContextType(), clang::isValidSwiftIndirectResultType(), isWebAssemblyFuncrefType(), clang::InitializationSequence::Perform(), clang::Sema::PerformImplicitConversion(), clang::Sema::PerformImplicitObjectArgumentInitialization(), clang::Sema::PerformObjectMemberConversion(), clang::Sema::PerformQualificationConversion(), clang::Sema::PrepareScalarCast(), clang::ASTContext::removePtrSizeAddrSpace(), rewriteBuiltinFunctionDecl(), and TryReinterpretCast().

◆ getAsOpaquePtr()

void * clang::QualType::getAsOpaquePtr ( ) const
inline

◆ getAsString() [1/4]

std::string QualType::getAsString ( ) const

◆ getAsString() [2/4]

std::string QualType::getAsString ( const PrintingPolicy Policy) const

Definition at line 2565 of file TypePrinter.cpp.

References getAsStringInternal().

◆ getAsString() [3/4]

std::string QualType::getAsString ( const Type ty,
Qualifiers  qs,
const PrintingPolicy Policy 
)
static

Definition at line 2571 of file TypePrinter.cpp.

References getAsStringInternal().

◆ getAsString() [4/4]

static std::string clang::QualType::getAsString ( SplitQualType  split,
const PrintingPolicy Policy 
)
inlinestatic

◆ getAsStringInternal() [1/3]

void QualType::getAsStringInternal ( const Type ty,
Qualifiers  qs,
std::string &  out,
const PrintingPolicy policy 
)
static

Definition at line 2599 of file TypePrinter.cpp.

◆ getAsStringInternal() [2/3]

static void clang::QualType::getAsStringInternal ( SplitQualType  split,
std::string &  out,
const PrintingPolicy policy 
)
inlinestatic

◆ getAsStringInternal() [3/3]

void QualType::getAsStringInternal ( std::string &  Str,
const PrintingPolicy Policy 
) const

◆ getAtomicUnqualifiedType()

QualType QualType::getAtomicUnqualifiedType ( ) const

Remove all qualifiers including _Atomic.

Like getUnqualifiedType(), the type may still be qualified if it is a sugared array type. To strip qualifiers even from within a sugared array type, use in conjunction with ASTContext::getUnqualifiedArrayType.

Definition at line 1629 of file Type.cpp.

References clang::Type::getAs(), and clang::T.

Referenced by clang::Sema::CheckAssignmentOperands(), clang::Sema::CheckSingleAssignmentConstraints(), clang::TypeOfExprType::desugar(), and clang::TypeOfType::desugar().

◆ getBaseTypeIdentifier()

const IdentifierInfo * QualType::getBaseTypeIdentifier ( ) const

◆ getCanonicalType()

QualType clang::QualType::getCanonicalType ( ) const
inline

Definition at line 7807 of file Type.h.

References withFastQualifiers().

Referenced by clang::Sema::ActOnCXXTryBlock(), clang::Sema::ActOnFunctionDeclarator(), clang::SemaOpenMP::ActOnOpenMPAlignedClause(), clang::SemaOpenMP::ActOnOpenMPDeclareMapperDirective(), adjustReturnValue(), clang::CodeGen::CGOpenMPRuntimeGPU::adjustTargetSpecificDataForLambdas(), appendType(), clang::ast_matchers::AST_POLYMORPHIC_MATCHER_P2(), clang::Sema::BuildExprRequirement(), clang::Sema::BuildReturnStmt(), buildUserDefinedMapperRef(), clang::SemaPPC::BuiltinPPCMMACall(), clang::Sema::BuiltinVectorMath(), clang::checkBlockArgs(), clang::SemaOpenCL::checkBuiltinEnqueueKernel(), clang::SemaRISCV::CheckBuiltinFunctionCall(), clang::Sema::CheckCompareOperands(), clang::Sema::CheckCompletedCXXClass(), checkMappableExpressionList(), checkNoThrow(), clang::checkOpenCLEnqueueVariadicArgs(), clang::Sema::CheckSizelessVectorConditionalTypes(), clang::Sema::checkTypeSupport(), ConvertTypeToDiagnosticString(), clang::dataflow::copyRecord(), create_call_once(), clang::ConstructionContext::createFromLayers(), clang::Sema::CreateGenericSelectionExpr(), DeduceTemplateArgumentsByTypeMatch(), DeduceTemplateSpecArguments(), diagnoseOpenCLTypes(), DiagnoseRecursiveConstFields(), clang::ento::SMTConv::doTypeConversion(), dumpMicrosoftThunkAdjustment(), emitBadConversionNotes(), emitReadOnlyPlacementAttrWarning(), encodeTypeForFunctionPointerAuth(), findSubobject(), fixVarDeclWithArray(), clang::CodeGen::CodeGenModule::GenKernelArgMetadata(), getAArch64LS(), getAArch64MTV(), getAArch64PBV(), getGlobalStreamPointerByName(), clang::ento::StoreManager::getLValueElement(), getNaiveStrategy(), getNDSWDS(), getOpenCLKernelParameterType(), clang::dataflow::DataflowAnalysisContext::getOrCreateNullPointerValue(), clang::ento::ObjCMethodCall::getRuntimeDefinition(), handleComplexFloatConversion(), handleDiagnoseAsBuiltinAttr(), clang::RecordType::hasConstFields(), clang::Sema::inferGslPointerAttribute(), isBitwiseCloneableType(), clang::Decl::isFunctionPointerType(), clang::CodeGen::CodeGenModule::isInNoSanitizeList(), clang::ento::RetainSummaryManager::isKnownSmartPointer(), isLayoutCompatible(), IsOverloadOrOverrideImpl(), isPointerToConst(), IsStringInit(), isSubstitutedType(), clang::InitListExpr::isTransparent(), isValidSizelessVectorForConditionalCondition(), isValidVectorForConditionalCondition(), maybeRecoverWithZeroInitialization(), clang::CodeGen::CodeGenModule::MayDropFunctionReturn(), processImplicitMapsWithDefaultMappers(), clang::dataflow::recordsEqual(), REGISTER_MAP_WITH_PROGRAMSTATE(), splitAccordingToPolicy(), SuggestInitializationFixit(), tryExtractInitializerFromList(), clang::Value::Value(), clang::interp::Compiler< Emitter >::VisitCastExpr(), clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl(), and clang::ento::SValExplainer::VisitSymbolicRegion().

◆ getCVRQualifiers()

unsigned clang::QualType::getCVRQualifiers ( ) const
inline

◆ getDesugaredType()

QualType clang::QualType::getDesugaredType ( const ASTContext Context) const
inline

Return the specified type with any "sugar" removed from the type.

This takes off typedefs, typeof's etc. If the outer level of the type is already concrete, it returns it unmodified. This is similar to getting the canonical type, but it doesn't remove all typedefs. For example, it returns "T*" as "T*", (not as "int*"), because the pointer is concrete.

Qualifiers are left in place.

Definition at line 1303 of file Type.h.

References getDesugaredType().

Referenced by clang::Sema::ActOnFields(), clang::Sema::DiagnoseInvalidExplicitObjectParameterInLambda(), clang::ento::TypedRegion::getDesugaredLocationType(), getDesugaredType(), clang::SemaObjC::getMessageSendResultType(), isGRealloc(), isStandardRealloc(), and IsStructurallyEquivalent().

◆ getFromOpaquePtr()

static QualType clang::QualType::getFromOpaquePtr ( const void *  Ptr)
inlinestatic

◆ getLocalCVRQualifiers()

unsigned clang::QualType::getLocalCVRQualifiers ( ) const
inline

Retrieve the set of CVR (const-volatile-restrict) qualifiers local to this particular QualType instance, not including any qualifiers acquired through typedefs or other sugar.

Definition at line 1093 of file Type.h.

References getLocalFastQualifiers().

Referenced by clang::Sema::CheckOverridingFunctionReturnType(), diagnoseRedundantReturnTypeQualifiers(), clang::CanQual< T >::getCVRQualifiers(), and TryObjectArgumentInitialization().

◆ getLocalFastQualifiers()

unsigned clang::QualType::getLocalFastQualifiers ( ) const
inline

◆ getLocalQualifiers()

Qualifiers clang::QualType::getLocalQualifiers ( ) const
inline

◆ getLocalUnqualifiedType()

QualType clang::QualType::getLocalUnqualifiedType ( ) const
inline

Return this type with all of the instance-specific qualifiers removed, but without removing any qualifiers that may have been applied through typedefs.

Definition at line 1232 of file Type.h.

References getTypePtr(), and QualType().

Referenced by clang::Sema::AttachBaseSpecifiers(), BuildSimilarlyQualifiedPointerType(), clang::ento::StoreManager::castRegion(), DiagnoseNarrowingInInitList(), clang::SemaObjC::handleExternallyRetainedAttr(), IsStandardConversion(), clang::ProgramPoint::printJson(), and TryObjectArgumentInitialization().

◆ getNonLValueExprType()

QualType QualType::getNonLValueExprType ( const ASTContext Context) const

Determine the type of a (typically non-lvalue) expression with the specified result type.

This routine should be used for expressions for which the return type is explicitly specified (e.g., in a cast or call) and isn't necessarily an lvalue. It removes a top-level reference (since there are no expressions of reference type) and deletes top-level cvr-qualifiers from non-class types (in C++) or all types (in C).

Definition at line 3476 of file Type.cpp.

References clang::ASTContext::getLangOpts(), clang::Type::getPointeeType(), getTypePtr(), getUnqualifiedType(), and isRecordType().

Referenced by clang::SemaOpenMP::ActOnOpenMPLoopInitialization(), clang::Sema::AddConversionCandidate(), clang::Sema::BuildCallToMemberFunction(), clang::Sema::BuildCallToObjectOfClassType(), clang::Sema::BuildCXXMemberCallExpr(), clang::Sema::BuildExpressionFromDeclTemplateArgument(), clang::Sema::BuildLiteralOperatorCall(), clang::Sema::BuildOverloadedArrowExpr(), clang::Sema::BuildVAArgExpr(), CheckConvertibilityForTypeTraits(), clang::Sema::CheckSingleAssignmentConstraints(), clang::Sema::CheckTemplateArgument(), clang::Sema::CreateOverloadedArraySubscriptExpr(), clang::Sema::CreateOverloadedBinOp(), clang::Sema::CreateOverloadedUnaryOp(), EvaluateBinaryTypeTrait(), EvaluateBooleanTypeTrait(), findOMPAllocatorHandleT(), clang::FunctionType::getCallResultType(), clang::ObjCMethodDecl::getSendResultType(), clang::InitializationSequence::Perform(), PerformConstructorInitialization(), clang::Sema::PerformImplicitConversion(), TryClassUnification(), and TryRefInitWithConversionFunction().

◆ getNonPackExpansionType()

QualType QualType::getNonPackExpansionType ( ) const

Remove an outer pack expansion type (if any) from this type.

Used as part of converting the type of a declaration to the type of an expression that references that expression. It's meaningless for an expression to have a pack expansion type.

Definition at line 3469 of file Type.cpp.

References getTypePtr().

◆ getNonReferenceType()

QualType clang::QualType::getNonReferenceType ( ) const
inline

If Type is a reference type (e.g., const int&), returns the type that the reference refers to ("const int").

Otherwise, returns the type itself. This routine is used throughout Sema to implement C++ 5p6:

If an expression initially has the type "reference to T" (8.3.2, 8.5.3), the type is adjusted to "T" prior to any further analysis, the expression designates the object or function denoted by the reference, and the expression is an lvalue.

Definition at line 7956 of file Type.h.

References clang::Type::getPointeeType().

Referenced by clang::SemaOpenMP::ActOnOpenMPAlignedClause(), clang::SemaOpenMP::ActOnOpenMPCopyinClause(), clang::SemaOpenMP::ActOnOpenMPDependClause(), clang::SemaOpenMP::ActOnOpenMPFirstprivateClause(), clang::SemaOpenMP::ActOnOpenMPIdExpression(), clang::SemaOpenMP::ActOnOpenMPLastprivateClause(), clang::SemaOpenMP::ActOnOpenMPPrivateClause(), clang::Sema::ActOnParamDefaultArgumentError(), clang::SemaObjC::ActOnPropertyImplDecl(), clang::Sema::AddConversionCandidate(), AddObjCKeyValueCompletions(), clang::CodeGen::CGOpenMPRuntimeGPU::adjustTargetSpecificDataForLambdas(), clang::Sema::BuildBuiltinOffsetOf(), clang::Sema::BuildCallToObjectOfClassType(), buildCapture(), clang::Sema::BuildCXXForRangeStmt(), clang::Sema::BuildCXXTypeConstructExpr(), buildDeclareReductionRef(), BuildImplicitBaseInitializer(), BuildImplicitMemberInitializer(), clang::Sema::BuildMemberReferenceExpr(), buildPromiseCall(), clang::Sema::BuiltinAddPointer(), clang::Sema::BuiltinDecay(), clang::Sema::BuiltinRemoveReference(), canCaptureVariableByCopy(), captureInBlock(), captureInLambda(), castToBase(), clang::CodeGen::CGOpenMPRuntime::checkAndEmitSharedLastprivateConditional(), checkCastFunctionType(), clang::Sema::CheckCompleteDecompositionDeclaration(), clang::Sema::CheckConditionVariable(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), checkMapConflicts(), checkOpenMPIterationSpace(), clang::Sema::CheckTemplateArgument(), CheckTemplateArgumentAddressOfObjectOrFunction(), CheckTemplateArgumentIsCompatibleWithParameter(), CheckTemplateArgumentPointerToMember(), clang::SemaOpenACC::CheckVarIsPointerType(), clang::SemaCodeCompletion::CodeCompleteObjCMethodDeclSelector(), CompleteNonViableCandidate(), clang::Sema::ConstantFoldAttrArgs(), create_call_once(), create_call_once_funcptr_call(), createObjCPropertyGetter(), createPrivatesRecordDecl(), DeduceNonTypeTemplateArgument(), clang::InitializationSequence::Diagnose(), diagnoseAmbiguousConversion(), clang::SemaObjC::diagnoseARCUnbridgedCast(), DiagnoseBadConversion(), DiagnoseForRangeReferenceVariableCopies(), clang::Sema::DiagnoseInvalidExplicitObjectParameterInLambda(), DiagnoseNarrowingInInitList(), diagnoseNoViableConversion(), clang::SemaObjC::DiagnosePropertyAccessorMismatch(), emitBadConversionNotes(), emitCPPObjectAtomicSetterCall(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalFinalUpdate(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalInit(), emitPreCond(), clang::SemaObjC::EmitRelatedResultTypeNote(), emitStructSetterCall(), emitTaskPrivateMappingFunction(), clang::SemaOpenMP::EndOpenMPDSABlock(), EvaluateBinaryTypeTrait(), FindConversionForRefInit(), getAsRecordDecl(), clang::CFGImplicitDtor::getDestructorDecl(), clang::CXXMethodDecl::getFunctionObjectParameterType(), clang::Sema::getNamedReturnInfo(), clang::UnresolvedMemberExpr::getNamingClass(), clang::CodeGen::CodeGenModule::getOMPAllocateAlignment(), getParamType(), clang::CXXTypeidExpr::getTypeOperand(), clang::CXXUuidofExpr::getTypeOperand(), getVariableCategoryFromDecl(), clang::Sema::HandleFunctionTypeMismatch(), handleTrivialCopy(), hasCopyOrMoveCtorParam(), clang::TemplateDeclInstantiator::InstantiateTypedefNameDecl(), clang::interp::InterpretOffsetOf(), isAllowableExplicitConversion(), isFirstArgumentCompatibleWithType(), clang::SemaOpenMP::isOpenMPCapturedByRef(), clang::SemaOpenMP::isOpenMPCapturedDecl(), IsTypeModifiable(), isVariableAlreadyCapturedInScopeInfo(), loadToBegin(), clang::InitializationSequence::Perform(), clang::Sema::PerformContextualImplicitConversion(), clang::Sema::PerformImplicitConversion(), clang::APValue::printPretty(), clang::SemaObjC::ProcessPropertyDecl(), recordConversion(), clang::Sema::tryCaptureVariable(), and TryObjectArgumentInitialization().

◆ getObjCGCAttr()

Qualifiers::GC clang::QualType::getObjCGCAttr ( ) const
inline

Returns gc attribute of this type.

Return the gc attribute of this type.

Definition at line 7886 of file Type.h.

Referenced by clang::ASTContext::getObjCGCAttrKind(), clang::ASTContext::getObjCGCQualType(), isObjCGCStrong(), and isObjCGCWeak().

◆ getObjCLifetime()

Qualifiers::ObjCLifetime clang::QualType::getObjCLifetime ( ) const
inline

Returns lifetime attribute of this type.

Definition at line 1444 of file Type.h.

References clang::Qualifiers::getObjCLifetime(), and getQualifiers().

Referenced by clang::Sema::ActOnFields(), clang::SemaObjC::ActOnProperty(), clang::SemaObjC::ActOnPropertyImplDecl(), clang::Sema::AddInitializerToDecl(), clang::Sema::BuildAtomicExpr(), clang::Sema::BuildCXXNew(), clang::Sema::BuildDeclRefExpr(), clang::SemaObjC::BuildInstanceMessage(), clang::SemaObjC::BuildIvarRefExpr(), clang::Sema::BuildPseudoDestructorExpr(), captureInBlock(), captureInLambda(), checkAllAtProps(), clang::Sema::CheckAllocatedType(), checkARCPropertyImpl(), clang::SemaARM::CheckARMBuiltinExclusiveCall(), clang::Sema::CheckAssignmentOperands(), clang::Sema::checkIllFormedTrivialABIStruct(), clang::SemaObjC::CheckObjCARCUnavailableWeakConversion(), clang::SemaObjC::CheckObjCConversion(), clang::Sema::CheckTemplateTypeArgument(), checkTrivialClassMembers(), clang::Sema::checkUnsafeAssigns(), clang::Sema::checkUnsafeExprAssigns(), clang::Sema::DefaultLvalueConversion(), DiagnoseRetainableFlexibleArrayMember(), EmitObjectDelete(), clang::findRetainCycleOwner(), clang::ASTContext::getByrefLifetime(), GetGCAttrTypeForType(), clang::SemaObjC::handlePreciseLifetimeAttr(), clang::SemaObjC::HandlePropertyInClassExtension(), inferARCWriteback(), isInvalidICRSource(), isNonTrivialToPrimitiveDefaultInitialize(), isNonWeakInMRRWithObjCWeak(), LookupMemberExpr(), PropertyMemoryAttribute(), pushTemporaryCleanup(), setImpliedPropertyAttributeForReadOnlyProperty(), shouldExtendReceiverForInnerPointerMessage(), transferARCOwnershipToDeclSpec(), and tryEmitARCCopyWeakInit().

◆ getPointerAuth()

PointerAuthQualifier clang::QualType::getPointerAuth ( ) const
inline

Definition at line 1459 of file Type.h.

References clang::Qualifiers::getPointerAuth(), and getQualifiers().

Referenced by clang::ASTContext::getPointerAuthType().

◆ getQualifiers()

Qualifiers clang::QualType::getQualifiers ( ) const
inline

Retrieve the set of qualifiers applied to this type.

Definition at line 7795 of file Type.h.

References clang::Qualifiers::addFastQualifiers().

Referenced by clang::Sema::ActOnCXXDelete(), clang::Sema::ActOnFields(), clang::SemaObjC::actOnObjCTypeParam(), AddRecordMembersCompletionResults(), clang::applyObjCTypeArgs(), clang::ASTContext::BlockRequiresCopying(), clang::Sema::BuildCallExpr(), clang::Sema::BuildCallToMemberFunction(), clang::Sema::BuildDeclRefExpr(), clang::Sema::BuildFieldReferenceExpr(), BuildImplicitBaseInitializer(), clang::Sema::BuildMemberExpr(), BuildSimilarlyQualifiedPointerType(), clang::Sema::BuiltinChangeSignedness(), clang::Sema::CheckAllocatedType(), checkComplexDecomposition(), checkConditionalObjectPointersCompatibility(), checkConditionalPointerCompatibility(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), checkMemberDecomposition(), CheckOriginalCallArgDeduction(), clang::Sema::CheckPointerToMemberOperands(), checkVectorDecomposition(), clang::Sema::CreateBuiltinArraySubscriptExpr(), createPlaceholderSlot(), decomposeTypeForEH(), DeduceTemplateArgumentsByTypeMatch(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitMoveAssignment(), clang::InitializationSequence::Diagnose(), clang::Sema::DiagnoseAssignmentResult(), DiagnoseUninitializedUse(), emitBadConversionNotes(), clang::CodeGen::CGObjCRuntime::EmitInitOfCatchParam(), emitInitWithReductionInitializer(), EmitOMPAggregateInit(), EmitValToTemp(), clang::SemaObjC::FindCompositeObjCPointerType(), fixParamWithSpan(), getCommonArrayElementType(), clang::ASTContext::getDeclAlign(), clang::TypeName::getFullyQualifiedType(), getObjCLifetime(), getPointeeTypeText(), getPointerAuth(), clang::SemaObjC::handleExternallyRetainedAttr(), hasInconsistentOrSupersetQualifiersOf(), hasNonTrivialObjCLifetime(), hasStrongOrWeakObjCLifetime(), isAddressSpaceOverlapping(), isAtLeastAsQualifiedAs(), isMoreQualifiedThan(), isNonTrivialToPrimitiveCopy(), isNonTrivialToPrimitiveDefaultInitialize(), clang::Expr::isNullPointerConstant(), clang::Sema::isObjCPointerConversion(), clang::SemaObjC::isObjCWritebackConversion(), isQualificationConversionStep(), IsStructurallyEquivalent(), isSubstitutedType(), clang::isValidSwiftErrorResultType(), clang::ASTContext::mergeTypes(), clang::Sema::PerformImplicitConversion(), clang::Sema::PerformImplicitObjectArgumentInitialization(), clang::TreeTransform< Derived >::RebuildQualifiedType(), clang::Sema::RefersToMemberWithReducedAlignment(), RemoveAddressSpaceFromPtr(), ResolveConstructorOverload(), rewriteToObjCProperty(), StoreAnyExprIntoOneUnit(), TryDefaultInitialization(), clang::tryMakeVariablePseudoStrong(), TryObjectArgumentInitialization(), TryReferenceInit(), TryReferenceInitializationCore(), TryRefInitWithConversionFunction(), TryReinterpretCast(), TryStaticCast(), TryUserDefinedConversion(), and TypeInfoIsInStandardLibrary().

◆ getSingleStepDesugaredType()

QualType clang::QualType::getSingleStepDesugaredType ( const ASTContext Context) const
inline

Return the specified type with one level of "sugar" removed from the type.

This routine takes off the first typedef, typeof, etc. If the outer level of the type is already concrete, it returns it unmodified.

Definition at line 1316 of file Type.h.

Referenced by computeConditionalNullability(), and isOpenCLSizeDependentType().

◆ getSplitDesugaredType()

SplitQualType clang::QualType::getSplitDesugaredType ( ) const
inline

Definition at line 1307 of file Type.h.

References getSplitDesugaredType().

Referenced by getSplitDesugaredType().

◆ getSplitUnqualifiedType()

SplitQualType clang::QualType::getSplitUnqualifiedType ( ) const
inline

Retrieve the unqualified variant of the given type, removing as little sugar as possible.

Like getUnqualifiedType(), but also returns the set of qualifiers that were built up.

The resulting type might still be qualified if it's sugar for an array type. To strip qualifiers even from within a sugared array type, use ASTContext::getUnqualifiedArrayType.

Definition at line 7856 of file Type.h.

Referenced by clang::Sema::BuiltinDecay().

◆ getTypePtr()

const Type * clang::QualType::getTypePtr ( ) const
inline

Retrieves a pointer to the underlying (unqualified) type.

This function requires that the type not be NULL. If the type might be NULL, use the (slightly less efficient) getTypePtrOrNull().

Definition at line 7755 of file Type.h.

Referenced by clang::Sema::ActOnCastExpr(), clang::Sema::ActOnFields(), clang::SemaOpenMP::ActOnOpenMPDependClause(), addAssociatedClassesAndNamespaces(), clang::ASTContext::adjustObjCTypeParamBoundType(), clang::interp::Compiler< Emitter >::allocateLocal(), clang::interp::Compiler< Emitter >::allocateTemporary(), clang::Sema::BuildCXXNamedCast(), clang::Sema::BuildExpressionFromDeclTemplateArgument(), clang::Sema::CheckAddressOfOperand(), checkArrayExpressionDoesNotReferToUnitySize(), checkArrayExpressionDoesNotReferToWholeSize(), clang::SemaRISCV::CheckBuiltinFunctionCall(), clang::Sema::CheckCXXThrowOperand(), clang::Sema::CheckImplicitConversion(), checkIsValidOpenCLKernelParameter(), checkNoThrow(), CheckNullabilityTypeSpecifier(), clang::SemaObjC::CheckObjCConversion(), clang::SemaOpenMP::checkOpenMPDeclareVariantFunction(), clang::SemaCodeCompletion::CodeCompleteMemberReferenceExpr(), clang::EnumDecl::completeDefinition(), clang::CodeGen::CodeGenTypes::ConvertRecordDeclType(), clang::ObjCTypeParamDecl::Create(), clang::TemplateTypeParmDecl::Create(), clang::interp::Program::createDescriptor(), clang::CodeGen::CodeGenModule::createOpenCLIntToSamplerConversion(), clang::Sema::DiagnoseUnusedButSetDecl(), clang::CodeGen::CodeGenModule::EmitVTableTypeMetadata(), encodeTypeForFunctionPointerAuth(), clang::TypePropertyCache< Private >::ensure(), FindVA(), clang::Sema::FixOverloadedFunctionReference(), getBaseTypeIdentifier(), clang::ASTContext::getCanonicalType(), clang::CodeGen::CodeGenTypes::getCGRecordLayout(), getCommonNonSugarTypeNode(), clang::ASTContext::getCommonSugaredType(), getCurrentInstantiationOf(), clang::TypeName::getFullyQualifiedTemplateType(), clang::TypeName::getFullyQualifiedType(), clang::InjectedClassNameType::getInjectedTST(), getIntegerTypeForEnum(), getLastTemplateSpecType(), getLocalUnqualifiedType(), clang::SemaObjC::getMessageSendResultType(), getNonLValueExprType(), getNonPackExpansionType(), clang::interp::Program::getOrCreateDummy(), clang::interp::Program::getOrCreateRecord(), getRequiredQualification(), llvm::simplify_type< ::clang::QualType >::getSimplifiedValue(), getTypeAlignIfRequired(), GetTypeOfFunction(), clang::CanQual< T >::getTypePtr(), clang::TypeLoc::getTypePtr(), clang::ASTContext::getUsingType(), getUuidAttrOfType(), handleCallbackAttr(), clang::ASTNodeImporter::hasReturnTypeDeclaredInside(), clang::ASTImporter::Import(), clang::Sema::inferGslPointerAttribute(), isCXX11PODType(), isCXX98PODType(), clang::CodeGen::ABIInfo::isHomogeneousAggregate(), clang::CodeGen::CodeGenModule::isInNoSanitizeList(), clang::Sema::IsMemberPointerConversion(), isNonTrivialToPrimitiveCopy(), isNonTrivialToPrimitiveDefaultInitialize(), clang::Type::isObjCARCImplicitlyUnretainedType(), IsOverloadOrOverrideImpl(), IsPossiblyOpaquelyQualifiedType(), clang::CodeGen::isSingleElementStruct(), IsStandardConversion(), clang::ASTImporter::IsStructurallyEquivalent(), isTrivialType(), isWebAssemblyExternrefType(), isWebAssemblyFuncrefType(), lookupPromiseType(), clang::Sema::MaybeBindToTemporary(), mayBeDynamicClass(), mayBeNotDynamicClass(), maybeTailCall(), clang::ASTContext::mergeObjCGCQualifiers(), clang::Sema::MergeTypedefNameDecl(), clang::ASTContext::mergeTypes(), clang::StmtIteratorBase::NextVA(), operator*(), operator->(), clang::InitializationSequence::Perform(), printIntegral(), processImplicitMapsWithDefaultMappers(), rebuildAttributedTypeWithoutNullability(), clang::CodeGen::CodeGenModule::SetLLVMFunctionAttributesForDefinition(), typeIsPostfix(), clang::CodeGen::CodeGenTypes::UpdateCompletedType(), UseExcessPrecision(), clang::Value::Value(), clang::interp::Compiler< Emitter >::VisitCastExpr(), and clang::interp::Compiler< Emitter >::VisitCXXNewExpr().

◆ getTypePtrOrNull()

const Type * clang::QualType::getTypePtrOrNull ( ) const
inline

◆ getUnqualifiedType()

QualType clang::QualType::getUnqualifiedType ( ) const
inline

Retrieve the unqualified variant of the given type, removing as little sugar as possible.

This routine looks through various kinds of sugar to find the least-desugared type that is unqualified. For example, given:

typedef int Integer;
typedef const Integer CInteger;
typedef CInteger DifferenceType;

Executing getUnqualifiedType() on the type DifferenceType will desugar until we hit the type Integer, which has no qualifiers on it.

The resulting type might still be qualified if it's sugar for an array type. To strip qualifiers even from within a sugared array type, use ASTContext::getUnqualifiedArrayType.

Note: In C, the _Atomic qualifier is special (see C23 6.2.5p32 for details), and it is not stripped by this function. Use getAtomicUnqualifiedType() to strip qualifiers including _Atomic.

Definition at line 7849 of file Type.h.

Referenced by clang::Sema::ActOnCapScopeReturnStmt(), clang::Sema::ActOnCXXDelete(), clang::Sema::ActOnCXXTryBlock(), clang::SemaObjC::actOnObjCTypeParam(), clang::SemaOpenMP::ActOnOpenMPAlignedClause(), clang::SemaOpenMP::ActOnOpenMPCopyinClause(), clang::SemaOpenMP::ActOnOpenMPCopyprivateClause(), clang::SemaOpenMP::ActOnOpenMPFirstprivateClause(), clang::SemaOpenMP::ActOnOpenMPPrivateClause(), clang::Sema::ActOnStmtExprResult(), clang::Sema::AddConversionCandidate(), AdjustFunctionParmAndArgTypesForDeduction(), clang::applyObjCTypeArgs(), clang::Sema::BuildAtomicExpr(), clang::Sema::BuildBinOp(), clang::Sema::BuildCallToMemberFunction(), clang::Sema::BuildCXXTypeConstructExpr(), buildDeclareReductionRef(), BuildImplicitBaseInitializer(), BuildSimilarlyQualifiedPointerType(), buildUserDefinedMapperRef(), clang::SemaPPC::BuiltinPPCMMACall(), captureInCapturedRegion(), clang::Sema::CheckAllocatedType(), clang::SemaARM::CheckARMBuiltinExclusiveCall(), clang::Sema::CheckAssignmentOperands(), checkBlockPointerTypesForAssignment(), clang::SemaOpenCL::checkBuiltinEnqueueKernel(), clang::SemaRISCV::CheckBuiltinFunctionCall(), clang::SemaOpenCL::checkBuiltinNDRangeAndBlock(), clang::Sema::CheckCompareOperands(), clang::Sema::CheckCompletedCXXClass(), clang::Sema::CheckConditionalOperands(), checkConditionalPointerCompatibility(), CheckIncrementDecrementOperand(), clang::Sema::CheckLiteralOperatorDeclaration(), clang::Sema::CheckMatrixElementwiseOperands(), clang::Sema::CheckMatrixMultiplyOperands(), clang::SemaOpenMP::checkOpenMPDeclareVariantFunction(), CheckOriginalCallArgDeduction(), checkPointerAuthValue(), clang::Sema::CheckSingleAssignmentConstraints(), clang::Sema::CheckSizelessVectorConditionalTypes(), clang::Sema::CheckSizelessVectorOperands(), clang::Sema::CheckSubtractionOperands(), clang::Sema::CheckTemplateArgument(), checkTrivialSubobjectCall(), clang::Sema::checkTypeSupport(), clang::SemaOpenACC::CheckVarIsPointerType(), clang::Sema::CheckVectorConditionalTypes(), clang::Sema::CheckVectorOperands(), CompareDerivedToBaseConversions(), CompareStandardConversionSequences(), clang::dataflow::copyRecord(), decomposeTypeForEH(), DeduceNonTypeTemplateArgument(), clang::Sema::DeduceTemplateArguments(), DeduceTemplateArguments(), clang::Sema::DiagnoseAssignmentEnum(), clang::Sema::DiagnoseAssignmentResult(), DiagnoseBadFunctionCast(), DiagnoseCastOfObjCSEL(), clang::Sema::DiagnoseInvalidExplicitObjectParameterInLambda(), FindConversionForRefInit(), FormatFunctionParameter(), getNonLValueExprType(), clang::SubstNonTypeTemplateParmExpr::getParameterType(), clang::CXXBaseSpecifier::getType(), handleDiagnoseAsBuiltinAttr(), HandleDynamicCast(), hasUserDefinedMapper(), clang::Sema::IsBlockPointerConversion(), clang::Sema::isInitListConstructor(), clang::CodeGen::CodeGenModule::isInNoSanitizeList(), isLayoutCompatible(), clang::SemaObjC::isObjCWritebackConversion(), isOpenCLSizeDependentType(), clang::Sema::IsQualificationConversion(), clang::ento::cocoa::isRefType(), IsStandardConversion(), isValidInteropVariable(), IsVoidStarType(), maybeAdjustInterfaceForSubscriptingCheck(), clang::ASTContext::mergeFunctionTypes(), clang::ASTContext::mergeTypes(), OpenCLConvertScalarsToVectors(), clang::InitializationSequence::Perform(), clang::Sema::PerformContextualImplicitConversion(), clang::Sema::PerformImplicitConversion(), clang::TemplateParamObjectDecl::printAsExpr(), clang::TreeTransform< Derived >::RebuildQualifiedType(), clang::dataflow::recordsEqual(), RemoveAddressSpaceFromPtr(), ResolveOverloadedFunctionForReferenceBinding(), rewriteToObjCProperty(), clang::Sema::tryCaptureVariable(), TryLValueToRValueCast(), TryRefInitWithConversionFunction(), TryStaticDowncast(), TryUserDefinedConversion(), TypeIsInnerPointer(), and clang::Sema::UsualArithmeticConversions().

◆ hasAddressSpace()

bool clang::QualType::hasAddressSpace ( ) const
inline

◆ hasLocalNonFastQualifiers()

bool clang::QualType::hasLocalNonFastQualifiers ( ) const
inline

Determine whether this particular QualType instance has any "non-fast" qualifiers, e.g., those that are stored in an ExtQualType instance.

Definition at line 1078 of file Type.h.

Referenced by hasLocalQualifiers().

◆ hasLocalQualifiers()

bool clang::QualType::hasLocalQualifiers ( ) const
inline

Determine whether this particular QualType instance has any qualifiers, without looking through any typedefs that might add qualifiers at a different level.

Definition at line 1068 of file Type.h.

References getLocalFastQualifiers(), and hasLocalNonFastQualifiers().

Referenced by clang::ASTContext::getConstantArrayType(), clang::TypeName::getFullyQualifiedType(), clang::ASTContext::getIncompleteArrayType(), clang::ASTContext::getUsingType(), clang::ASTContext::getVariableArrayType(), and clang::CanQual< T >::hasQualifiers().

◆ hasNonTrivialObjCLifetime()

bool clang::QualType::hasNonTrivialObjCLifetime ( ) const
inline

◆ hasNonTrivialToPrimitiveCopyCUnion()

bool clang::QualType::hasNonTrivialToPrimitiveCopyCUnion ( ) const
inline

Check if this is or contains a C union that is non-trivial to copy, which is a union that has a member that is non-trivial to copy.

If this returns true, isNonTrivialToPrimitiveCopy returns PCK_Struct.

Definition at line 7902 of file Type.h.

References getAsRecordDecl().

Referenced by clang::Sema::ActOnBlockStmtExpr(), clang::Sema::ActOnFields(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::AddInitializerToDecl(), clang::Sema::BuildCompoundLiteralExpr(), clang::Sema::CheckLValueToRValueConversionOperand(), clang::Sema::checkNonTrivialCUnion(), clang::Sema::checkNonTrivialCUnionInInitializer(), clang::Sema::CheckParameter(), clang::Sema::CreateBuiltinBinOp(), and markEscapingByrefs().

◆ hasNonTrivialToPrimitiveDefaultInitializeCUnion()

bool clang::QualType::hasNonTrivialToPrimitiveDefaultInitializeCUnion ( ) const
inline

Check if this is or contains a C union that is non-trivial to default-initialize, which is a union that has a member that is non-trivial to default-initialize.

If this returns true, isNonTrivialToPrimitiveDefaultInitialize returns PDIK_Struct.

Definition at line 7890 of file Type.h.

References getAsRecordDecl().

Referenced by clang::Sema::ActOnFields(), clang::Sema::AddInitializerToDecl(), clang::Sema::BuildCompoundLiteralExpr(), clang::Sema::checkNonTrivialCUnion(), and clang::Sema::checkNonTrivialCUnionInInitializer().

◆ hasNonTrivialToPrimitiveDestructCUnion()

bool clang::QualType::hasNonTrivialToPrimitiveDestructCUnion ( ) const
inline

Check if this is or contains a C union that is non-trivial to destruct, which is a union that has a member that is non-trivial to destruct.

If this returns true, isDestructedType returns DK_nontrivial_c_struct.

Definition at line 7896 of file Type.h.

References getAsRecordDecl().

Referenced by clang::Sema::ActOnBlockStmtExpr(), clang::Sema::ActOnFields(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::BuildCompoundLiteralExpr(), clang::Sema::CheckLValueToRValueConversionOperand(), clang::Sema::checkNonTrivialCUnion(), clang::Sema::CheckParameter(), and markEscapingByrefs().

◆ hasQualifiers()

bool clang::QualType::hasQualifiers ( ) const
inline

◆ hasStrongOrWeakObjCLifetime()

bool clang::QualType::hasStrongOrWeakObjCLifetime ( ) const
inline

Definition at line 1452 of file Type.h.

References getQualifiers(), and clang::Qualifiers::hasStrongOrWeakObjCLifetime().

◆ IgnoreParens()

QualType clang::QualType::IgnoreParens ( ) const
inline

Returns the specified type after dropping any outer-level parentheses.

Definition at line 1322 of file Type.h.

References IgnoreParens().

Referenced by IgnoreParens().

◆ isAddressSpaceOverlapping()

bool clang::QualType::isAddressSpaceOverlapping ( QualType  T) const
inline

Returns true if address space qualifiers overlap with T address space qualifiers.

OpenCL C defines conversion rules for pointers to different address spaces and notion of overlapping address spaces. CL1.1 or CL1.2: address spaces overlap iff they are they same. OpenCL C v2.0 s6.5.5 adds: __generic overlaps with any address space except for __constant.

Definition at line 1423 of file Type.h.

References getQualifiers(), clang::Qualifiers::isAddressSpaceSupersetOf(), and clang::T.

Referenced by checkArithmeticBinOpPointerOperands(), and clang::Sema::CheckCompareOperands().

◆ isAtLeastAsQualifiedAs()

bool clang::QualType::isAtLeastAsQualifiedAs ( QualType  other) const
inline

Determine whether this type is at least as qualified as the other given type, requiring exact equality for non-CVR qualifiers.

Determine whether this type is at last as qualified as the Other type.

For example, "const volatile int" is at least as qualified as "const int", "volatile int", "int", and "const volatile int".

Definition at line 7937 of file Type.h.

References getQualifiers(), and clang::Qualifiers::removeUnaligned().

Referenced by clang::SemaARM::CheckARMBuiltinExclusiveCall(), checkObjCPointerTypesForAssignment(), clang::CanQual< T >::isAtLeastAsQualifiedAs(), clang::Sema::isObjCPointerConversion(), TryClassUnification(), and TryObjectArgumentInitialization().

◆ isBitwiseCloneableType()

bool QualType::isBitwiseCloneableType ( const ASTContext Context) const

Return true if the type is safe to bitwise copy using memcpy/memmove.

This is an extension in clang: bitwise cloneable types act as trivially copyable types, meaning their underlying bytes can be safely copied by memcpy or memmove. After the copy, the destination object has the same object representation.

However, there are cases where it is not safe to copy:

  • When sanitizers, such as AddressSanitizer, add padding with poison, which can cause issues if those poisoned padding bits are accessed.
  • Types with Objective-C lifetimes, where specific runtime semantics may not be preserved during a bitwise copy.

Definition at line 2757 of file Type.cpp.

References clang::ASTContext::getBaseElementType(), getCanonicalType(), and isBitwiseCloneableType().

Referenced by isBitwiseCloneableType().

◆ isCanonical()

bool clang::QualType::isCanonical ( ) const
inline

◆ isCanonicalAsParam()

bool clang::QualType::isCanonicalAsParam ( ) const
inline

◆ isCForbiddenLValueType()

bool clang::QualType::isCForbiddenLValueType ( ) const
inline

Determine whether expressions of the given type are forbidden from being lvalues in C.

The expression types that are forbidden to be lvalues are:

  • 'void', but not qualified void
  • function types

The exact rule here is C99 6.3.2.1: An lvalue is an expression with an object type or an incomplete type other than void.

Definition at line 7963 of file Type.h.

Referenced by clang::Sema::CreateBuiltinArraySubscriptExpr(), and clang::ento::ExprEngine::VisitArraySubscriptExpr().

◆ isConstant()

bool clang::QualType::isConstant ( const ASTContext Ctx) const
inline

◆ isConstantStorage()

bool clang::QualType::isConstantStorage ( const ASTContext Ctx,
bool  ExcludeCtor,
bool  ExcludeDtor 
)
inline

◆ isConstQualified()

bool clang::QualType::isConstQualified ( ) const
inline

Determine whether this type is const-qualified.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/StaticAnalyzer/Core/RegionStore.cpp.

Definition at line 7828 of file Type.h.

Referenced by clang::Sema::ActOnEndOfTranslationUnit(), clang::Sema::ActOnFinishFunctionBody(), clang::SemaObjC::ActOnObjCForCollectionStmt(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::AddInitializerToDecl(), alignReferenceTypes(), clang::interp::Compiler< Emitter >::allocateLocal(), clang::interp::Compiler< Emitter >::allocateTemporary(), appendQualifier(), basicGVALinkageForVariable(), clang::Sema::BuildAtomicExpr(), BuildImplicitMemberInitializer(), captureInCapturedRegion(), clang::interp::CheckConstant(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), clang::Sema::CheckLiteralOperatorDeclaration(), CheckTemporary(), decomposeTypeForEH(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitMoveAssignment(), DiagnoseForRangeVariableCopies(), clang::SemaSwift::DiagnoseName(), diagnoseOpenCLTypes(), DiagnoseRecursiveConstFields(), emitReadOnlyPlacementAttrWarning(), clang::ento::ExprEngine::evalCall(), evaluateLValueAsAllocSize(), findSubobject(), clang::CodeGen::CodeGenModule::GenKernelArgMetadata(), clang::interp::Program::getOrCreateRecord(), getSubobjectType(), clang::ento::MemRegionManager::getVarRegion(), clang::consumed::ConsumedStmtVisitor::handleCall(), clang::Sema::handlerCanCatch(), clang::RecordType::hasConstFields(), clang::SemaCUDA::IdentifyTarget(), isPointerToConst(), isReferenceToNonConstCapture(), IsTypeModifiable(), isVoidPointerToNonConst(), MarkVarDeclODRUsed(), clang::analyze_format_string::ArgType::matchesType(), clang::SemaCUDA::MaybeAddConstantAttr(), ShouldDiagnoseSwitchCaseNotInEnum(), clang::Sema::SpecialMemberIsTrivial(), clang::Sema::tryCaptureVariable(), TryConstructorInitialization(), TryDefaultInitialization(), TryListConversion(), TryReferenceInit(), tryRemoveRetainOfSelf(), clang::ento::UndefOrNullArgVisitor::VisitNode(), and clang::interp::Compiler< Emitter >::visitVarDecl().

◆ isCXX11PODType()

bool QualType::isCXX11PODType ( const ASTContext Context) const

Return true if this is a POD type according to the more relaxed rules of the C++11 standard, regardless of the current compilation's language.

(C++0x [basic.types]p9). Note that, unlike CXXRecordDecl::isCXX11StandardLayout, this takes DRs into account.

Definition at line 3009 of file Type.cpp.

References clang::Type::getAs(), clang::Type::getBaseElementTypeUnsafe(), getTypePtr(), hasNonTrivialObjCLifetime(), clang::Type::isDependentType(), clang::Type::isIncompleteType(), clang::Type::isScalarType(), clang::Type::isSizelessBuiltinType(), and clang::Type::isVectorType().

Referenced by isPODType().

◆ isCXX98PODType()

bool QualType::isCXX98PODType ( const ASTContext Context) const

Return true if this is a POD type according to the rules of the C++98 standard, regardless of the current compilation's language.

Definition at line 2604 of file Type.cpp.

References clang::ASTContext::getBaseElementType(), clang::Type::getTypeClass(), getTypePtr(), hasNonTrivialObjCLifetime(), isCXX98PODType(), and isNull().

Referenced by isCXX98PODType(), isPODType(), and clang::Sema::isValidVarArgType().

◆ isDestructedType()

DestructionKind clang::QualType::isDestructedType ( ) const
inline

◆ isLocalConstQualified()

bool clang::QualType::isLocalConstQualified ( ) const
inline

Determine whether this particular QualType instance has the "const" qualifier set, without looking through typedefs that may have added "const" at a different level.

Definition at line 1018 of file Type.h.

References clang::Qualifiers::Const, and getLocalFastQualifiers().

Referenced by clang::CanQual< T >::isConstQualified().

◆ isLocalRestrictQualified()

bool clang::QualType::isLocalRestrictQualified ( ) const
inline

Determine whether this particular QualType instance has the "restrict" qualifier set, without looking through typedefs that may have added "restrict" at a different level.

Definition at line 1048 of file Type.h.

References getLocalFastQualifiers(), and clang::Qualifiers::Restrict.

Referenced by clang::CanQual< T >::isRestrictQualified().

◆ isLocalVolatileQualified()

bool clang::QualType::isLocalVolatileQualified ( ) const
inline

Determine whether this particular QualType instance has the "volatile" qualifier set, without looking through typedefs that may have added "volatile" at a different level.

Definition at line 1058 of file Type.h.

References getLocalFastQualifiers(), and clang::Qualifiers::Volatile.

Referenced by clang::CanQual< T >::isVolatileQualified().

◆ isMoreQualifiedThan()

bool clang::QualType::isMoreQualifiedThan ( QualType  other) const
inline

Determine whether this type is more qualified than the other given type, requiring exact equality for non-CVR qualifiers.

Determine whether this type is more qualified than the Other type.

For example, "const volatile int" is more qualified than "const int", "volatile int", and "int". However, it is not more qualified than "const volatile int".

Definition at line 7927 of file Type.h.

References clang::Qualifiers::compatiblyIncludes(), and getQualifiers().

Referenced by buildDeclareReductionRef(), clang::Sema::CheckOverridingFunctionReturnType(), CompareStandardConversionSequences(), and clang::CanQual< T >::isMoreQualifiedThan().

◆ isNonConstantStorage()

std::optional< QualType::NonConstantStorageReason > QualType::isNonConstantStorage ( const ASTContext Ctx,
bool  ExcludeCtor,
bool  ExcludeDtor 
)

Determine whether instances of this type can be placed in immutable storage.

If ExcludeCtor is true, the duration when the object's constructor runs will not be considered. The caller will need to verify that the object is not written to during its construction. ExcludeDtor works similarly.

Definition at line 116 of file Type.cpp.

References clang::Type::getAsCXXRecordDecl(), clang::ASTContext::getBaseElementType(), clang::ASTContext::getLangOpts(), isConstant(), MutableField, NonConstNonReferenceType, NonTrivialCtor, and NonTrivialDtor.

Referenced by isConstantStorage().

◆ isNonTrivialToPrimitiveCopy()

QualType::PrimitiveCopyKind QualType::isNonTrivialToPrimitiveCopy ( ) const

Check if this is a non-trivial type that would cause a C struct transitively containing this type to be non-trivial to copy and return the kind.

Definition at line 2870 of file Type.cpp.

References clang::Qualifiers::getObjCLifetime(), getQualifiers(), getTypePtr(), clang::Qualifiers::hasVolatile(), clang::Qualifiers::OCL_Strong, clang::Qualifiers::OCL_Weak, PCK_ARCStrong, PCK_ARCWeak, PCK_Struct, PCK_Trivial, and PCK_VolatileTrivial.

Referenced by clang::Sema::ActOnFields(), isNonTrivialToPrimitiveDestructiveMove(), and clang::CopiedTypeVisitor< Derived, IsMove, RetTy >::visit().

◆ isNonTrivialToPrimitiveDefaultInitialize()

QualType::PrimitiveDefaultInitializeKind QualType::isNonTrivialToPrimitiveDefaultInitialize ( ) const

Functions to query basic properties of non-trivial C struct types.

Check if this is a non-trivial type that would cause a C struct transitively containing this type to be non-trivial to default initialize and return the kind.

Definition at line 2854 of file Type.cpp.

References getObjCLifetime(), getQualifiers(), getTypePtr(), clang::Qualifiers::OCL_Strong, clang::Qualifiers::OCL_Weak, PDIK_ARCStrong, PDIK_ARCWeak, PDIK_Struct, and PDIK_Trivial.

Referenced by clang::Sema::ActOnFields(), and clang::DefaultInitializedTypeVisitor< Derived, RetTy >::visit().

◆ isNonTrivialToPrimitiveDestructiveMove()

QualType::PrimitiveCopyKind QualType::isNonTrivialToPrimitiveDestructiveMove ( ) const

Check if this is a non-trivial type that would cause a C struct transitively containing this type to be non-trivial to destructively move and return the kind.

Destructive move in this context is a C++-style move in which the source object is placed in a valid but unspecified state after it is moved, as opposed to a truly destructive move in which the source object is placed in an uninitialized state.

Definition at line 2888 of file Type.cpp.

References isNonTrivialToPrimitiveCopy().

Referenced by clang::ASTContext::BlockRequiresCopying(), isTriviallyRelocatableType(), and clang::CopiedTypeVisitor< Derived, IsMove, RetTy >::visit().

◆ isNonWeakInMRRWithObjCWeak()

bool QualType::isNonWeakInMRRWithObjCWeak ( const ASTContext Context) const

◆ isNull()

bool clang::QualType::isNull ( ) const
inline

Return true if this QualType doesn't point to a type yet.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/StaticAnalyzer/Core/RegionStore.cpp.

Definition at line 1008 of file Type.h.

Referenced by clang::SemaOpenACC::ActOnArraySectionExpr(), clang::Sema::ActOnArraySubscriptExpr(), clang::Sema::ActOnBlockStmtExpr(), clang::Sema::ActOnBuiltinOffsetOf(), clang::Sema::ActOnCapScopeReturnStmt(), clang::SemaObjC::ActOnClassMessage(), clang::SemaObjC::ActOnClassPropertyRefExpr(), clang::Sema::ActOnConditionalOp(), clang::Sema::ActOnDependentIdExpression(), clang::Sema::ActOnExplicitInstantiation(), clang::Sema::ActOnGCCAsmStmt(), clang::Sema::ActOnLambdaExpressionAfterIntroducer(), clang::SemaObjC::ActOnMethodDeclaration(), clang::Sema::ActOnNumericConstant(), clang::SemaObjC::ActOnObjCForCollectionStmt(), clang::SemaObjC::actOnObjCTypeArgsAndProtocolQualifiers(), clang::SemaObjC::actOnObjCTypeArgsOrProtocolQualifiers(), clang::SemaOpenMP::ActOnOMPArraySectionExpr(), clang::SemaOpenMP::ActOnOpenMPCall(), clang::SemaOpenMP::ActOnOpenMPDeclareMapperType(), clang::SemaOpenMP::ActOnOpenMPDeclareReductionType(), clang::SemaOpenMP::ActOnOpenMPDependClause(), clang::SemaOpenMP::ActOnOpenMPUsesAllocatorClause(), clang::Sema::ActOnPseudoDestructorExpr(), clang::SemaOpenMP::ActOnStartOfFunctionDefinitionInOpenMPDeclareVariantScope(), clang::SemaObjC::ActOnSuperClassOfClassInterface(), clang::SemaObjC::ActOnSuperMessage(), clang::Sema::ActOnTemplateIdType(), clang::Sema::ActOnTypeRequirement(), clang::SemaSYCL::ActOnUniqueStableNameExpr(), clang::Sema::ActOnUsingEnumDeclaration(), clang::Sema::AddFunctionCandidates(), clang::Sema::AddInitializerToDecl(), clang::Sema::AddMethodCandidate(), clang::Sema::AddMethodTemplateCandidate(), clang::Sema::AddModeAttr(), AddObjCKeyValueCompletions(), AddOrdinaryNameResults(), AddResultTypeChunk(), addThisCompletion(), clang::Sema::adjustCCAndNoReturn(), AdjustFunctionParmAndArgTypesForDeduction(), allowAmbiguity(), clang::ASTContext::areCommonBaseCompatible(), assertEqualBitWidths(), clang::ento::ProgramState::assumeInBoundDual(), clang::ast_matchers::AST_POLYMORPHIC_MATCHER_P_OVERLOAD(), clang::SemaObjC::BuildClassMessageImplicit(), buildCoroutineHandle(), clang::Sema::BuildCXXNestedNameSpecifier(), clang::Sema::BuildCXXNew(), clang::Sema::BuildCXXTypeConstructExpr(), clang::Sema::BuildDeclarationNameExpr(), clang::Sema::BuildDeclaratorGroup(), clang::Sema::BuildExpressionFromDeclTemplateArgument(), clang::Sema::BuildImplicitMemberExpr(), clang::SemaObjC::BuildInstanceMessage(), clang::Sema::buildLambdaInitCaptureInitialization(), clang::Sema::BuildMemInitializer(), clang::SemaObjC::BuildObjCDictionaryLiteral(), clang::SemaObjC::BuildObjCEncodeExpression(), clang::SemaObjC::BuildObjCStringLiteral(), clang::Sema::BuildReturnStmt(), BuildSimilarlyQualifiedPointerType(), clang::Sema::BuildVAArgExpr(), BuiltinAddressof(), clang::Sema::BuiltinChangeSignedness(), clang::Sema::BuiltinVectorMath(), clang::Sema::canDelayFunctionBody(), clang::Sema::canThrow(), clang::Sema::CheckAdditionOperands(), clang::Sema::CheckAssignmentOperands(), clang::Sema::CheckBitwiseOperands(), clang::Sema::CheckConditionalOperands(), checkConditionalPointerCompatibility(), checkDeducedTemplateArguments(), clang::Sema::CheckDestructorAccess(), clang::Sema::CheckExplicitlyDefaultedComparison(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), CheckIncrementDecrementOperand(), clang::SemaObjC::checkInitMethod(), CheckKeyForObjCARCConversion(), clang::Sema::CheckMultiplyDivideOperands(), clang::Sema::CheckNonDependentConversions(), clang::SemaOpenMP::checkOpenMPDeclareVariantFunction(), clang::Sema::CheckOverridingFunctionReturnType(), clang::Sema::CheckRemainderOperands(), clang::Sema::CheckSizelessVectorCompareOperands(), clang::Sema::CheckSubtractionOperands(), clang::Sema::CheckTemplateArgument(), clang::Sema::CheckTemplateIdType(), checkTupleLikeDecomposition(), clang::Sema::checkTypeSupport(), clang::Sema::checkUnsafeExprAssigns(), clang::Sema::CheckVariableDeclarationType(), clang::Sema::CheckVectorCompareOperands(), clang::Sema::CheckVectorLogicalOperands(), ClassifyImplicitMemberAccess(), clang::SemaCodeCompletion::CodeCompleteDesignator(), clang::SemaCodeCompletion::CodeCompleteMemberReferenceExpr(), clang::SemaCodeCompletion::CodeCompleteObjCClassMessage(), clang::SemaCodeCompletion::CodeCompleteObjCInstanceMessage(), clang::SemaCodeCompletion::CodeCompleteObjCMethodDecl(), clang::SemaCodeCompletion::CodeCompleteQualifiedId(), clang::Sema::containsUnexpandedParameterPacks(), ConvertTypeToDiagnosticString(), create_call_once(), clang::Sema::CreateBuiltinBinOp(), clang::Sema::CreateBuiltinUnaryOp(), clang::CodeCompletionResult::createCodeCompletionStringForDecl(), clang::Sema::CXXCheckConditionalOperands(), decomposeTypeForEH(), clang::Sema::DeduceAutoType(), clang::Sema::deduceClosureReturnType(), clang::Sema::DeduceTemplateArguments(), clang::Sema::deduceVarTypeFromInitializer(), clang::Sema::DefaultArgumentPromotion(), clang::Sema::DefaultFunctionArrayConversion(), determineEndOffset(), clang::Sema::DiagnoseAlwaysNonNullPointer(), DiagnoseBadDeduction(), DiagnoseForRangeReferenceVariableCopies(), clang::ODRDiagsEmitter::diagnoseMismatch(), clang::ento::SMTConv::doIntTypeConversion(), clang::ento::SMTConv::doTypeConversion(), EmitAsmStores(), clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), encodeTypeForFunctionPointerAuth(), clang::ento::StoreManager::evalBaseToDerived(), clang::ento::retaincountchecker::RetainCountChecker::evalCall(), clang::ento::ExprEngine::evalCall(), clang::ento::ExprEngine::evalLoad(), EvaluateAsRValue(), evaluateCDTSize(), FastEvaluateAsRValue(), clang::Sema::FindCompositePointerType(), FindDesignatorMismatch(), FindImplementableMethods(), findOMPAllocatorHandleT(), findOMPAlloctraitT(), findOMPDependT(), findOMPEventHandleT(), FinishForRangeVarDecl(), clang::Sema::FinishTemplateArgumentDeduction(), fixVarDeclWithArray(), generateDiagnosticsForCallLike(), clang::FunctionEffectsRef::get(), clang::ASTContext::getAutoDeductType(), clang::ASTContext::getAutoRRefDeductType(), clang::CallExpr::getCallReturnType(), clang::ASTContext::getCommentForDecl(), clang::Sema::getCurrentThisType(), clang::ASTContext::getDependentNameType(), getDependTypes(), getDesignatedType(), clang::Sema::getDestructorName(), clang::Sema::getDestructorTypeForDecltype(), GetEnumUnderlyingType(), getExistingLazyBinding(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForEnum(), GetFullTypeForDeclarator(), clang::Decl::getFunctionType(), getGlobalStreamPointerByName(), clang::ClassTemplateDecl::getInjectedClassNameSpecialization(), getKmpAffinityType(), getLambdaType(), clang::ento::StoreManager::getLValueElement(), getMostInformativeDerivedClassImpl(), clang::Sema::getMostSpecialized(), clang::Sema::GetNameFromUnqualifiedId(), clang::CodeGen::CodeGenModule::getObjCFastEnumerationStateType(), clang::Type::getObjCSubstitutions(), clang::ASTContext::getObjCSuperType(), clang::dataflow::DataflowAnalysisContext::getOrCreateNullPointerValue(), getParamType(), getPointerAuthInfoForPointeeType(), getPreferredArgumentTypeForMessageSend(), getPrettyTypeName(), getPrivateItem(), clang::ASTContext::getPromotedIntegerType(), clang::ento::CXXInstanceCall::getRuntimeDefinition(), clang::ento::ObjCMethodCall::getRuntimeDefinition(), clang::ObjCObjectPointerType::getSuperClassType(), clang::ASTContext::getTemplateSpecializationType(), clang::Sema::getTrivialTemplateArgumentLoc(), clang::ASTContext::getTypedefType(), clang::Sema::GetTypeFromParser(), clang::ASTContext::getUsingType(), clang::ento::MemRegionManager::getVarRegion(), HandleAddressSpaceTypeAttribute(), clang::Sema::HandleDependentAccessCheck(), clang::Sema::HandleFunctionTypeMismatch(), clang::CompletionContextHandler::handleKeyword(), clang::SemaObjC::handleXReturnsXRetainedAttr(), hasBPFPreserveStaticOffset(), hasNonTrivialConstructorCall(), clang::ASTContext::hasUniqueObjectRepresentations(), HelperIsMethodInObjCType(), clang::ASTImporter::Import(), clang::ASTReader::InitializeContext(), clang::InitializationSequence::InitializeFrom(), instantiateOMPDeclareVariantAttr(), clang::comments::DeclInfo::involvesFunctionType(), IsAcceptableNonMemberOperatorCandidate(), isCXX98PODType(), clang::Declarator::isDeclarationOfFunction(), clang::DeducedType::isDeduced(), isImplicitMapperNeeded(), isIndirectPointerType(), clang::CodeGen::CodeGenModule::isInNoSanitizeList(), isLayoutCompatible(), clang::CanQual< T >::isNull(), clang::SemaOpenMP::isOpenMPCapturedDecl(), isOSObjectRelated(), isPointerToConst(), isPointerToObject(), clang::FunctionDecl::isReplaceableGlobalAllocationFunction(), IsStructurallyEquivalent(), isSubstitutedType(), clang::DeducedType::isSugared(), clang::Sema::isThisOutsideMemberFunctionBody(), isTrivialType(), clang::ento::DynamicTypeInfo::isValid(), clang::SemaObjC::isValidOSObjectOutParameter(), clang::isValidSubjectOfOSAttribute(), clang::Sema::LazilyCreateBuiltin(), lookupCoroutineHandleType(), clang::ComparisonCategories::lookupInfoForType(), LookupMemberExpr(), clang::Sema::LookupParsedName(), lookupPromiseType(), lookupStdTypeTraitMember(), clang::Sema::LookupTemplateName(), clang::analyze_format_string::ArgType::makeVectorType(), maybeAdjustInterfaceForSubscriptingCheck(), mergeEnumWithInteger(), clang::Sema::MergeFunctionDecl(), clang::ASTContext::mergeFunctionParameterTypes(), clang::ASTContext::mergeFunctionTypes(), clang::ASTContext::mergeObjCGCQualifiers(), clang::ASTContext::mergeTransparentUnionType(), clang::ASTContext::mergeTypes(), clang::Sema::MergeVarDeclTypes(), OpenCLCheckVectorConditional(), OpenCLConvertScalarsToVectors(), clang::SemaObjC::ParseObjCProtocolExpression(), clang::Sema::PerformContextualImplicitConversion(), clang::Sema::PerformImplicitConversion(), clang::Sema::PerformImplicitObjectArgumentInitialization(), clang::ento::retaincountchecker::RefVal::print(), clang::APValue::printPretty(), ProcessAPINotes(), clang::ento::ExprEngine::processCallExit(), processImplicitMapsWithDefaultMappers(), clang::SemaCodeCompletion::ProduceCallSignatureHelp(), clang::TypedefType::Profile(), clang::ASTRecordReader::readTypeSourceInfo(), clang::TreeTransform< Derived >::RebuildUnresolvedUsingType(), recoverFromMSUnqualifiedLookup(), REGISTER_MAP_WITH_PROGRAMSTATE(), ResolveOverloadForDeduction(), rewriteToNSMacroDecl(), clang::SemaObjC::SelectorsForTypoCorrection(), clang::InitializationSequence::SetFailed(), clang::ASTContext::setObjCConstantStringInterface(), clang::Expr::setType(), shouldNotPrintDirectly(), clang::Sema::SubstituteExplicitTemplateArguments(), clang::Sema::SubstType(), throwEscapes(), clang::interp::Pointer::toRValue(), clang::TreeTransform< Derived >::TransformAttributedType(), clang::TreeTransform< Derived >::TransformDeclarationNameInfo(), clang::TreeTransform< Derived >::TransformFunctionProtoType(), clang::TreeTransform< Derived >::TransformFunctionTypeParams(), clang::TreeTransform< Derived >::TransformReferenceType(), clang::TreeTransform< Derived >::TransformTemplateArgument(), clang::TreeTransform< Derived >::TransformTemplateName(), clang::SemaOpenMP::tryCaptureOpenMPLambdas(), clang::Sema::tryExprAsCall(), TryOrBuildParenListInitialization(), tryRearrange(), TryReinterpretCast(), TryToFixInvalidVariablyModifiedType(), TryToFixInvalidVariablyModifiedTypeSourceInfo(), tryToInvalidateFReadBufferByElements(), clang::Sema::tryToRecoverWithCall(), clang::ASTContext::typesAreBlockPointerCompatible(), clang::ASTContext::typesAreCompatible(), UnwrapTypeForDebugInfo(), clang::Sema::UsualArithmeticConversions(), clang::Sema::UsualUnaryConversions(), clang::FunctionCallFilterCCC::ValidateCandidate(), clang::interp::Compiler< Emitter >::visit(), clang::interp::Compiler< Emitter >::VisitCastExpr(), clang::UsedDeclVisitor< Derived >::VisitCXXDeleteExpr(), clang::ASTDeclReader::VisitDeclaratorDecl(), clang::ASTNodeImporter::VisitTypedefNameDecl(), and clang::interp::Compiler< Emitter >::visitVarDecl().

◆ isObjCGCStrong()

bool clang::QualType::isObjCGCStrong ( ) const
inline

true when Type is objc's strong.

Definition at line 1439 of file Type.h.

References getObjCGCAttr(), and clang::Qualifiers::Strong.

Referenced by clang::Sema::ActOnFields(), clang::SemaObjC::ActOnPropertyImplDecl(), and GetGCAttrTypeForType().

◆ isObjCGCWeak()

bool clang::QualType::isObjCGCWeak ( ) const
inline

true when Type is objc's weak.

Definition at line 1434 of file Type.h.

References getObjCGCAttr(), and clang::Qualifiers::Weak.

Referenced by clang::SemaObjC::ActOnPropertyImplDecl(), and GetGCAttrTypeForType().

◆ isPODType()

bool QualType::isPODType ( const ASTContext Context) const

◆ isReferenceable()

bool clang::QualType::isReferenceable ( ) const
inline

Definition at line 7763 of file Type.h.

References clang::RQ_None.

Referenced by clang::Sema::BuiltinAddPointer(), and clang::Sema::BuiltinAddReference().

◆ isRestrictQualified()

bool clang::QualType::isRestrictQualified ( ) const
inline

Determine whether this type is restrict-qualified.

Definition at line 7833 of file Type.h.

Referenced by appendQualifier(), clang::SemaPPC::BuiltinPPCMMACall(), CheckC23ConstexprVarType(), CollectVRQualifiers(), and clang::CodeGen::CodeGenModule::GenKernelArgMetadata().

◆ isTriviallyCopyableType()

bool QualType::isTriviallyCopyableType ( const ASTContext Context) const

◆ isTriviallyCopyConstructibleType()

bool QualType::isTriviallyCopyConstructibleType ( const ASTContext Context) const

Return true if this is a trivially copyable type.

Definition at line 2793 of file Type.cpp.

References isTriviallyCopyableTypeImpl().

Referenced by DiagnoseForRangeConstVariableCopies().

◆ isTriviallyRelocatableType()

bool QualType::isTriviallyRelocatableType ( const ASTContext Context) const

◆ isTrivialType()

bool QualType::isTrivialType ( const ASTContext Context) const

◆ isVolatileQualified()

bool clang::QualType::isVolatileQualified ( ) const
inline

◆ isWebAssemblyExternrefType()

bool QualType::isWebAssemblyExternrefType ( ) const

Returns true if it is a WebAssembly Externref Type.

Definition at line 2844 of file Type.cpp.

References getTypePtr(), and clang::Type::isWebAssemblyExternrefType().

Referenced by isWebAssemblyReferenceType().

◆ isWebAssemblyFuncrefType()

bool QualType::isWebAssemblyFuncrefType ( ) const

Returns true if it is a WebAssembly Funcref Type.

Definition at line 2848 of file Type.cpp.

References getAddressSpace(), getTypePtr(), clang::Type::isFunctionPointerType(), and clang::wasm_funcref.

Referenced by isWebAssemblyReferenceType().

◆ isWebAssemblyReferenceType()

bool QualType::isWebAssemblyReferenceType ( ) const

◆ mayBeDynamicClass()

bool QualType::mayBeDynamicClass ( ) const

Returns true if it is a class and it might be dynamic.

Definition at line 95 of file Type.cpp.

References clang::Type::getPointeeCXXRecordDecl(), getTypePtr(), and clang::CXXRecordDecl::mayBeDynamicClass().

◆ mayBeNotDynamicClass()

bool QualType::mayBeNotDynamicClass ( ) const

Returns true if it is not a class or if the class might not be dynamic.

Definition at line 100 of file Type.cpp.

References clang::Type::getPointeeCXXRecordDecl(), getTypePtr(), and clang::CXXRecordDecl::mayBeNonDynamicClass().

◆ operator*()

const Type & clang::QualType::operator* ( ) const
inline

Definition at line 996 of file Type.h.

References getTypePtr().

◆ operator->()

const Type * clang::QualType::operator-> ( ) const
inline

Definition at line 1000 of file Type.h.

References getTypePtr().

◆ print() [1/3]

void QualType::print ( const Type ty,
Qualifiers  qs,
raw_ostream &  OS,
const PrintingPolicy policy,
const Twine &  PlaceHolder,
unsigned  Indentation = 0 
)
static

Definition at line 2584 of file TypePrinter.cpp.

◆ print() [2/3]

void QualType::print ( raw_ostream &  OS,
const PrintingPolicy Policy,
const Twine &  PlaceHolder = Twine(),
unsigned  Indentation = 0 
) const

◆ print() [3/3]

static void clang::QualType::print ( SplitQualType  split,
raw_ostream &  OS,
const PrintingPolicy policy,
const Twine &  PlaceHolder,
unsigned  Indentation = 0 
)
inlinestatic

Definition at line 1353 of file Type.h.

References print(), clang::SplitQualType::Quals, split(), and clang::SplitQualType::Ty.

◆ Profile()

void clang::QualType::Profile ( llvm::FoldingSetNodeID &  ID) const
inline

◆ removeLocalConst()

void clang::QualType::removeLocalConst ( )
inline

◆ removeLocalFastQualifiers() [1/2]

void clang::QualType::removeLocalFastQualifiers ( )
inline

Definition at line 1200 of file Type.h.

◆ removeLocalFastQualifiers() [2/2]

void clang::QualType::removeLocalFastQualifiers ( unsigned  Mask)
inline

Definition at line 1201 of file Type.h.

References clang::Qualifiers::FastMask.

◆ removeLocalRestrict()

void clang::QualType::removeLocalRestrict ( )
inline

Definition at line 7867 of file Type.h.

Referenced by clang::CXXMethodDecl::getThisType().

◆ removeLocalVolatile()

void clang::QualType::removeLocalVolatile ( )
inline

Definition at line 7871 of file Type.h.

Referenced by clang::Sema::BuildAtomicExpr(), and findSubobject().

◆ setLocalFastQualifiers()

void clang::QualType::setLocalFastQualifiers ( unsigned  Quals)
inline

Definition at line 969 of file Type.h.

◆ split()

SplitQualType clang::QualType::split ( ) const
inline

◆ stream()

StreamedQualTypeHelper clang::QualType::stream ( const PrintingPolicy Policy,
const Twine &  PlaceHolder = Twine(),
unsigned  Indentation = 0 
) const
inline

◆ stripObjCKindOfType()

QualType QualType::stripObjCKindOfType ( const ASTContext ctx) const

Strip Objective-C "__kindof" types from the given type.

Definition at line 1622 of file Type.cpp.

Referenced by clang::SemaCodeCompletion::CodeCompleteObjCMethodDecl().

◆ substObjCMemberType()

QualType QualType::substObjCMemberType ( QualType  objectType,
const DeclContext dc,
ObjCSubstitutionContext  context 
) const

Substitute type arguments from an object type for the Objective-C type parameters used in the subject type.

This operation combines the computation of type arguments for substitution (Type::getObjCSubstitutions) with the actual process of substitution (QualType::substObjCTypeArgs) for the convenience of callers that need to perform a single substitution in isolation.

Parameters
objectTypeThe type of the object whose member type we're substituting into. For example, this might be the receiver of a message or the base of a property access.
dcThe declaration context from which the subject type was retrieved, which indicates (for example) which type parameters should be substituted.
contextThe context in which the subject type was written.
Returns
the subject type after replacing all of the Objective-C type parameters with their corresponding arguments.

Definition at line 1613 of file Type.cpp.

References clang::Type::getObjCSubstitutions(), clang::DeclContext::getParentASTContext(), and substObjCTypeArgs().

Referenced by clang::ObjCMethodDecl::getSendResultType(), clang::ObjCPropertyDecl::getUsageType(), and clang::ObjCIvarDecl::getUsageType().

◆ substObjCTypeArgs()

QualType QualType::substObjCTypeArgs ( ASTContext ctx,
ArrayRef< QualType typeArgs,
ObjCSubstitutionContext  context 
) const

Substitute type arguments for the Objective-C type parameters used in the subject type.

Substitute the given type arguments for Objective-C type parameters within the given type, recursively.

Parameters
ctxASTContext in which the type exists.
typeArgsThe type arguments that will be substituted for the Objective-C type parameters in the subject type, which are generally computed via Type::getObjCSubstitutions. If empty, the type parameters will be replaced with their bounds or id/Class, as appropriate for the context.
contextThe context in which the subject type was written.
Returns
the resulting type.

Definition at line 1606 of file Type.cpp.

Referenced by clang::SemaObjC::CheckMessageArgumentTypes(), clang::SemaCodeCompletion::CodeCompleteObjCMethodDecl(), clang::ObjCObjectType::computeSuperClassTypeSlow(), clang::CodeCompletionResult::createCodeCompletionStringForDecl(), formatBlockPlaceholder(), getReturnTypeForMethod(), clang::ObjCMethodDecl::getSendResultType(), and substObjCMemberType().

◆ UseExcessPrecision()

bool QualType::UseExcessPrecision ( const ASTContext Ctx)

◆ withConst()

QualType clang::QualType::withConst ( ) const
inline

◆ withCVRQualifiers()

QualType clang::QualType::withCVRQualifiers ( unsigned  CVR) const
inline

◆ withExactLocalFastQualifiers()

QualType clang::QualType::withExactLocalFastQualifiers ( unsigned  TQs) const
inline

Definition at line 1216 of file Type.h.

References withFastQualifiers(), and withoutLocalFastQualifiers().

◆ withFastQualifiers()

QualType clang::QualType::withFastQualifiers ( unsigned  TQs) const
inline

◆ withoutLocalFastQualifiers()

QualType clang::QualType::withoutLocalFastQualifiers ( ) const
inline

Definition at line 1221 of file Type.h.

References clang::T.

Referenced by CheckTautologicalComparison(), getCoreType(), and withExactLocalFastQualifiers().

◆ withRestrict()

QualType clang::QualType::withRestrict ( ) const
inline

◆ withVolatile()

QualType clang::QualType::withVolatile ( ) const
inline

Friends And Related Function Documentation

◆ operator!=

bool operator!= ( const QualType LHS,
const QualType RHS 
)
friend

Definition at line 1332 of file Type.h.

◆ operator<

bool operator< ( const QualType LHS,
const QualType RHS 
)
friend

Definition at line 1335 of file Type.h.

◆ operator==

bool operator== ( const QualType LHS,
const QualType RHS 
)
friend

Indicate whether the specified types and qualifiers are identical.

Definition at line 1329 of file Type.h.

◆ QualifierCollector

friend class QualifierCollector
friend

Definition at line 942 of file Type.h.


The documentation for this class was generated from the following files: