clang  3.7.0
Public Member Functions | List of all members
clang::CodeGen::CodeGenTypes Class Reference

#include <CodeGenTypes.h>

Public Member Functions

 CodeGenTypes (CodeGenModule &cgm)
 
 ~CodeGenTypes ()
 
const llvm::DataLayout & getDataLayout () const
 
ASTContextgetContext () const
 
const ABIInfogetABIInfo () const
 
const TargetInfogetTarget () const
 
CGCXXABIgetCXXABI () const
 
llvm::LLVMContext & getLLVMContext ()
 
llvm::Type * ConvertType (QualType T)
 ConvertType - Convert type T into a llvm::Type. More...
 
llvm::Type * ConvertTypeForMem (QualType T)
 
llvm::FunctionType * GetFunctionType (const CGFunctionInfo &Info)
 GetFunctionType - Get the LLVM function type for. More...
 
llvm::FunctionType * GetFunctionType (GlobalDecl GD)
 
bool isFuncTypeConvertible (const FunctionType *FT)
 
bool isFuncParamTypeConvertible (QualType Ty)
 
llvm::Type * GetFunctionTypeForVTable (GlobalDecl GD)
 
const CGRecordLayoutgetCGRecordLayout (const RecordDecl *)
 getCGRecordLayout - Return record layout info for the given record decl. More...
 
void UpdateCompletedType (const TagDecl *TD)
 
const CGFunctionInfoarrangeNullaryFunction ()
 
const CGFunctionInfoarrangeGlobalDeclaration (GlobalDecl GD)
 
const CGFunctionInfoarrangeFunctionDeclaration (const FunctionDecl *FD)
 
const CGFunctionInfoarrangeFreeFunctionDeclaration (QualType ResTy, const FunctionArgList &Args, const FunctionType::ExtInfo &Info, bool isVariadic)
 
const CGFunctionInfoarrangeObjCMethodDeclaration (const ObjCMethodDecl *MD)
 
const CGFunctionInfoarrangeObjCMessageSendSignature (const ObjCMethodDecl *MD, QualType receiverType)
 
const CGFunctionInfoarrangeCXXMethodDeclaration (const CXXMethodDecl *MD)
 
const CGFunctionInfoarrangeCXXStructorDeclaration (const CXXMethodDecl *MD, StructorType Type)
 
const CGFunctionInfoarrangeCXXConstructorCall (const CallArgList &Args, const CXXConstructorDecl *D, CXXCtorType CtorKind, unsigned ExtraArgs)
 Arrange a call to a C++ method, passing the given arguments. More...
 
const CGFunctionInfoarrangeFreeFunctionCall (const CallArgList &Args, const FunctionType *Ty, bool ChainCall)
 
const CGFunctionInfoarrangeFreeFunctionCall (QualType ResTy, const CallArgList &args, FunctionType::ExtInfo info, RequiredArgs required)
 
const CGFunctionInfoarrangeBlockFunctionCall (const CallArgList &args, const FunctionType *type)
 
const CGFunctionInfoarrangeCXXMethodCall (const CallArgList &args, const FunctionProtoType *type, RequiredArgs required)
 Arrange a call to a C++ method, passing the given arguments. More...
 
const CGFunctionInfoarrangeMSMemberPointerThunk (const CXXMethodDecl *MD)
 
const CGFunctionInfoarrangeMSCtorClosure (const CXXConstructorDecl *CD, CXXCtorType CT)
 
const CGFunctionInfoarrangeFreeFunctionType (CanQual< FunctionProtoType > Ty)
 
const CGFunctionInfoarrangeFreeFunctionType (CanQual< FunctionNoProtoType > Ty)
 
const CGFunctionInfoarrangeCXXMethodType (const CXXRecordDecl *RD, const FunctionProtoType *FTP)
 
const CGFunctionInfoarrangeLLVMFunctionInfo (CanQualType returnType, bool instanceMethod, bool chainCall, ArrayRef< CanQualType > argTypes, FunctionType::ExtInfo info, RequiredArgs args)
 
CGRecordLayoutComputeRecordLayout (const RecordDecl *D, llvm::StructType *Ty)
 Compute a new LLVM record layout object for the given record. More...
 
void addRecordTypeName (const RecordDecl *RD, llvm::StructType *Ty, StringRef suffix)
 
llvm::StructType * ConvertRecordDeclType (const RecordDecl *TD)
 ConvertRecordDeclType - Lay out a tagged decl type like struct or union. More...
 
void getExpandedTypes (QualType Ty, SmallVectorImpl< llvm::Type * >::iterator &TI)
 
bool isZeroInitializable (QualType T)
 
bool isZeroInitializable (const RecordDecl *RD)
 
bool isRecordLayoutComplete (const Type *Ty) const
 
bool noRecordsBeingLaidOut () const
 
bool isRecordBeingLaidOut (const Type *Ty) const
 

Detailed Description

This class organizes the cross-module state that is used while lowering AST types to LLVM types.

Definition at line 120 of file CodeGenTypes.h.

Constructor & Destructor Documentation

CodeGenTypes::CodeGenTypes ( CodeGenModule cgm)

Definition at line 32 of file CodeGenTypes.cpp.

CodeGenTypes::~CodeGenTypes ( )

Definition at line 40 of file CodeGenTypes.cpp.

Member Function Documentation

void CodeGenTypes::addRecordTypeName ( const RecordDecl RD,
llvm::StructType *  Ty,
StringRef  suffix 
)

addRecordTypeName - Compute a name from the given record decl with an optional suffix and name the given LLVM type using it.

Definition at line 48 of file CodeGenTypes.cpp.

References clang::Decl::getDeclContext(), clang::NamedDecl::getIdentifier(), clang::TagDecl::getKindName(), clang::TagDecl::getTypedefNameForAnonDecl(), clang::NamedDecl::printName(), and clang::NamedDecl::printQualifiedName().

Referenced by ComputeRecordLayout(), and ConvertRecordDeclType().

const CGFunctionInfo & CodeGenTypes::arrangeBlockFunctionCall ( const CallArgList args,
const FunctionType fnType 
)

A block function call is essentially a free-function call with an extra implicit argument.

Definition at line 424 of file CGCall.cpp.

References arrangeFreeFunctionLikeCall().

const CGFunctionInfo & CodeGenTypes::arrangeCXXConstructorCall ( const CallArgList Args,
const CXXConstructorDecl D,
CXXCtorType  CtorKind,
unsigned  ExtraArgs 
)
const CGFunctionInfo & CodeGenTypes::arrangeCXXMethodCall ( const CallArgList args,
const FunctionProtoType type,
RequiredArgs  required 
)
const CGFunctionInfo & CodeGenTypes::arrangeCXXMethodDeclaration ( const CXXMethodDecl MD)

Arrange the argument and result information for a declaration or definition of the given C++ non-static member function. The member function must be an ordinary function, i.e. not a constructor or destructor.

Definition at line 177 of file CGCall.cpp.

References arrangeCXXMethodType(), arrangeFreeFunctionType(), GetFormalType(), clang::CodeGen::CGCXXABI::getThisArgumentTypeForMethod(), clang::CanQual< T >::getTypePtr(), and clang::CXXMethodDecl::isInstance().

Referenced by arrangeFunctionDeclaration(), clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorMemberCallExpr(), clang::CodeGen::CodeGenFunction::EmitForwardingCallToLambda(), and GetFunctionTypeForVTable().

const CGFunctionInfo & CodeGenTypes::arrangeCXXMethodType ( const CXXRecordDecl RD,
const FunctionProtoType FTP 
)

Arrange the argument and result information for a call to an unknown C++ non-static member function of the given abstract type. (Zero value of RD means we don't have any meaningful "this" argument type, so fall back to a generic pointer type). The member function must be an ordinary function, i.e. not a constructor or destructor.

Definition at line 157 of file CGCall.cpp.

References arrangeLLVMFunctionInfo(), clang::CanQual< T >::getAs(), clang::Type::getCanonicalTypeUnqualified(), GetThisType(), and clang::ASTContext::VoidPtrTy.

Referenced by arrangeCXXMethodDeclaration(), clang::CodeGen::CodeGenABITypes::arrangeCXXMethodType(), and clang::CodeGen::CGCXXABI::EmitLoadOfMemberFunctionPointer().

const CGFunctionInfo & CodeGenTypes::arrangeCXXStructorDeclaration ( const CXXMethodDecl MD,
StructorType  Type 
)
const CGFunctionInfo & CodeGenTypes::arrangeFreeFunctionCall ( const CallArgList args,
const FunctionType fnType,
bool  chainCall 
)

Figure out the rules for calling a function with the given formal type using the given arguments. The arguments are necessary because the function might be unprototyped, in which case it's target-dependent in crazy ways.

Definition at line 414 of file CGCall.cpp.

References arrangeFreeFunctionLikeCall().

Referenced by emitAtomicLibcall(), emitCPPObjectAtomicGetterCall(), emitCPPObjectAtomicSetterCall(), EmitNewDeleteCall(), clang::CodeGen::CodeGenFunction::EmitObjCForCollectionStmt(), emitStructGetterCall(), emitStructSetterCall(), and clang::CodeGen::CGObjCRuntime::getMessageSendInfo().

const CGFunctionInfo & CodeGenTypes::arrangeFreeFunctionCall ( QualType  ResTy,
const CallArgList args,
FunctionType::ExtInfo  info,
RequiredArgs  required 
)
const CGFunctionInfo & CodeGenTypes::arrangeFreeFunctionDeclaration ( QualType  ResTy,
const FunctionArgList Args,
const FunctionType::ExtInfo Info,
bool  isVariadic 
)
const CGFunctionInfo & CodeGenTypes::arrangeFreeFunctionType ( CanQual< FunctionProtoType FTP)

Arrange the argument and result information for a value of the given freestanding function type.

Definition at line 112 of file CGCall.cpp.

References arrangeLLVMFunctionInfo().

Referenced by arrangeCXXMethodDeclaration(), clang::CodeGen::CodeGenABITypes::arrangeFreeFunctionType(), arrangeFunctionDeclaration(), and ConvertType().

const CGFunctionInfo & CodeGenTypes::arrangeFreeFunctionType ( CanQual< FunctionNoProtoType FTNP)

Arrange the argument and result information for a value of the given unprototyped freestanding function type.

Definition at line 85 of file CGCall.cpp.

References arrangeLLVMFunctionInfo(), clang::CanQual< T >::getUnqualifiedType(), and clang::None.

const CGFunctionInfo & CodeGenTypes::arrangeFunctionDeclaration ( const FunctionDecl FD)
const CGFunctionInfo & CodeGenTypes::arrangeGlobalDeclaration ( GlobalDecl  GD)
const CGFunctionInfo & CodeGenTypes::arrangeLLVMFunctionInfo ( CanQualType  resultType,
bool  instanceMethod,
bool  chainCall,
ArrayRef< CanQualType argTypes,
FunctionType::ExtInfo  info,
RequiredArgs  required 
)
const CGFunctionInfo & CodeGenTypes::arrangeMSCtorClosure ( const CXXConstructorDecl CD,
CXXCtorType  CT 
)
const CGFunctionInfo & CodeGenTypes::arrangeMSMemberPointerThunk ( const CXXMethodDecl MD)

Arrange a thunk that takes 'this' as the first parameter followed by varargs. Return a void pointer, regardless of the actual return type. The body of the thunk will end in a musttail call to a function of the correct type, and the caller will bitcast the function to the correct prototype.

Definition at line 341 of file CGCall.cpp.

References arrangeLLVMFunctionInfo(), GetFormalType(), clang::CXXMethodDecl::getParent(), GetThisType(), clang::CXXMethodDecl::isVirtual(), and clang::ASTContext::VoidTy.

const CGFunctionInfo & CodeGenTypes::arrangeNullaryFunction ( )

getNullaryFunctionInfo - Get the function info for a void() function with standard CC.

Definition at line 475 of file CGCall.cpp.

References clang::CodeGen::RequiredArgs::All, arrangeLLVMFunctionInfo(), getContext(), and clang::None.

Referenced by clang::CodeGen::CodeGenFunction::createAtExitStub().

const CGFunctionInfo & CodeGenTypes::arrangeObjCMessageSendSignature ( const ObjCMethodDecl MD,
QualType  receiverType 
)

Arrange the argument and result information for the function type through which to perform a send to the given Objective-C method, using the given receiver type. The receiver type is not always the 'self' type of the method or even an Objective-C pointer type. This is not the right method for actually performing such a message send, due to the possibility of optional arguments.

Definition at line 295 of file CGCall.cpp.

References clang::CodeGen::RequiredArgs::All, arrangeLLVMFunctionInfo(), getCallingConventionForDecl(), clang::ASTContext::getCanonicalParamType(), getContext(), clang::ASTContext::getObjCSelType(), GetReturnType(), clang::ObjCMethodDecl::getReturnType(), clang::ASTContext::getTargetInfo(), clang::TargetInfo::getTriple(), clang::Decl::hasAttr(), clang::ObjCMethodDecl::isVariadic(), clang::ObjCMethodDecl::params(), clang::FunctionType::ExtInfo::withCallingConv(), and clang::FunctionType::ExtInfo::withProducesResult().

Referenced by clang::CodeGen::CodeGenABITypes::arrangeObjCMessageSendSignature(), arrangeObjCMethodDeclaration(), and clang::CodeGen::CGObjCRuntime::getMessageSendInfo().

const CGFunctionInfo & CodeGenTypes::arrangeObjCMethodDeclaration ( const ObjCMethodDecl MD)

Arrange the argument and result information for the declaration or definition of an Objective-C method.

Definition at line 282 of file CGCall.cpp.

References arrangeObjCMessageSendSignature(), clang::ObjCMethodDecl::getSelfDecl(), and clang::ValueDecl::getType().

Referenced by clang::CodeGen::CodeGenFunction::StartObjCMethod().

CGRecordLayout * CodeGenTypes::ComputeRecordLayout ( const RecordDecl D,
llvm::StructType *  Ty 
)
llvm::StructType * CodeGenTypes::ConvertRecordDeclType ( const RecordDecl TD)
llvm::Type * CodeGenTypes::ConvertType ( QualType  T)

ConvertType - Convert type T into a llvm::Type.

ConvertType - Convert the specified type to its LLVM form.

Definition at line 299 of file CodeGenTypes.cpp.

References arrangeFreeFunctionType(), clang::CodeGen::CGCXXABI::ConvertMemberPointerType(), clang::CodeGen::CGOpenCLRuntime::convertOpenCLSpecificType(), ConvertRecordDeclType(), ConvertTypeForMem(), clang::serialized_diags::create(), clang::Type::getAs(), clang::ASTContext::getCanonicalType(), getCXXABI(), clang::ArrayType::getElementType(), clang::VectorType::getElementType(), getElementType(), clang::ASTContext::getFloatTypeSemantics(), GetFunctionType(), clang::ArrayType::getIndexTypeCVRQualifiers(), clang::EnumDecl::getIntegerType(), getKind(), clang::ASTContext::getLangOpts(), getLLVMContext(), clang::VectorType::getNumElements(), clang::CodeGen::CodeGenModule::getOpenCLRuntime(), clang::PointerType::getPointeeType(), clang::ReferenceType::getPointeeType(), clang::FunctionType::getReturnType(), clang::ConstantArrayType::getSize(), clang::ASTContext::getTargetAddressSpace(), clang::Type::getTypeClass(), getTypeForFormat(), clang::QualType::getTypePtr(), clang::ASTContext::getTypeSize(), clang::CodeGen::CodeGenTypeCache::Int8Ty, clang::TagDecl::isCompleteDefinition(), clang::EnumDecl::isFixed(), and isFuncTypeConvertible().

Referenced by arrangeLLVMFunctionInfo(), buildBlockDescriptor(), buildGlobalBlock(), computeBlockInfo(), clang::CodeGen::CGCXXABI::ConvertMemberPointerType(), clang::CodeGen::CodeGenFunction::ConvertType(), ConvertTypeForMem(), clang::CodeGen::CodeGenVTables::CreateVTableInitializer(), clang::CodeGen::CodeGenFunction::EmitAArch64BuiltinExpr(), clang::CodeGen::CodeGenFunction::EmitARMBuiltinExpr(), clang::CodeGen::CodeGenFunction::EmitCall(), clang::CodeGen::CodeGenModule::EmitConstantValue(), EmitDeclDestroy(), clang::CodeGen::CodeGenFunction::EmitFunctionEpilog(), clang::CodeGen::CodeGenFunction::EmitFunctionProlog(), clang::emitKmpRoutineEntryT(), clang::CodeGen::CodeGenFunction::EmitObjCCollectionLiteral(), clang::CodeGen::CodeGenFunction::EmitSynthesizedCXXCopyCtorCall(), clang::CodeGen::CodeGenFunction::GenerateObjCCtorDtorMethod(), clang::CodeGen::CodeGenFunction::generateObjCGetterBody(), clang::CodeGen::CodeGenModule::GetAddrOfConstantCFString(), clang::CodeGen::CodeGenModule::GetAddrOfConstantString(), clang::CodeGen::CodeGenModule::GetAddrOfFunction(), clang::CodeGen::CodeGenModule::getBlockDescriptorType(), clang::CodeGen::CGCXXABI::GetBogusMemberPointer(), clang::CodeGen::CodeGenModule::GetConstantArrayFromStringLiteral(), getExpandedTypes(), GetFunctionType(), getGuardAcquireFn(), clang::CodeGen::CodeGenModule::GetNonVirtualBaseClassOffset(), initializeForBlockHeader(), and UpdateCompletedType().

llvm::Type * CodeGenTypes::ConvertTypeForMem ( QualType  T)
const ABIInfo& clang::CodeGen::CodeGenTypes::getABIInfo ( ) const
inline
const CGRecordLayout & CodeGenTypes::getCGRecordLayout ( const RecordDecl RD)

getCGRecordLayout - Return record layout info for the given record decl.

Definition at line 700 of file CodeGenTypes.cpp.

References ConvertRecordDeclType(), clang::ASTContext::getTagDeclType(), and clang::QualType::getTypePtr().

Referenced by EmitNullConstant(), EmitNullConstantForBase(), and isZeroInitializable().

ASTContext& clang::CodeGen::CodeGenTypes::getContext ( ) const
inline
CGCXXABI& clang::CodeGen::CodeGenTypes::getCXXABI ( ) const
inline
const llvm::DataLayout& clang::CodeGen::CodeGenTypes::getDataLayout ( ) const
inline
void CodeGenTypes::getExpandedTypes ( QualType  Ty,
SmallVectorImpl< llvm::Type * >::iterator &  TI 
)

getExpandedTypes - Expand the type

Definition at line 707 of file CGCall.cpp.

References ConvertType(), and getTypeExpansion().

Referenced by GetFunctionType().

llvm::FunctionType * CodeGenTypes::GetFunctionType ( const CGFunctionInfo Info)

GetFunctionType - Get the LLVM function type for.

  • Info.

Definition at line 1253 of file CGCall.cpp.

References clang::CodeGen::CGFunctionInfo::arg_begin(), ConvertType(), ConvertTypeForMem(), clang::CodeGen::ABIArgInfo::Direct, clang::CodeGen::ABIArgInfo::Expand, clang::CodeGen::ABIArgInfo::Extend, clang::CodeGen::CGFunctionInfo::getArgStruct(), clang::CodeGen::ABIArgInfo::getCanBeFlattened(), clang::CodeGen::ABIArgInfo::getCoerceToType(), getContext(), getExpandedTypes(), clang::CodeGen::ABIArgInfo::getInAllocaSRet(), clang::CodeGen::ABIArgInfo::getIndirectAlign(), clang::CodeGen::ABIArgInfo::getKind(), getLLVMContext(), clang::CodeGen::CGFunctionInfo::getNumRequiredArgs(), clang::CodeGen::ABIArgInfo::getPaddingType(), clang::CodeGen::CGFunctionInfo::getReturnInfo(), clang::CodeGen::CGFunctionInfo::getReturnType(), clang::ASTContext::getTargetAddressSpace(), clang::CodeGen::ABIArgInfo::Ignore, clang::CodeGen::ABIArgInfo::InAlloca, clang::CodeGen::ABIArgInfo::Indirect, clang::CodeGen::ABIArgInfo::isDirect(), and clang::CodeGen::CGFunctionInfo::isVariadic().

Referenced by clang::CodeGen::CodeGenFunction::BuildAppleKextVirtualDestructorCall(), ConvertType(), emitAtomicLibcall(), clang::CodeGen::CodeGenFunction::EmitCall(), emitCopyprivateCopyFunction(), clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorMemberCallExpr(), emitDestructorsFunction(), clang::CodeGen::CodeGenFunction::EmitForwardingCallToLambda(), clang::CodeGen::CodeGenModule::EmitGlobal(), clang::CodeGen::CGCXXABI::EmitLoadOfMemberFunctionPointer(), emitProxyTaskFunction(), emitReductionFunction(), emitTaskPrivateMappingFunction(), generateByrefCopyHelper(), generateByrefDisposeHelper(), clang::CodeGen::CodeGenFunction::GenerateCapturedStmtFunction(), clang::CodeGen::CodeGenFunction::generateDestroyHelper(), clang::CodeGen::CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction(), clang::CodeGen::CodeGenFunction::GenerateObjCAtomicSetterCopyHelperFunction(), clang::CodeGen::CodeGenFunction::generateThunk(), clang::CodeGen::CodeGenFunction::GenerateVarArgsThunk(), clang::CodeGen::CodeGenModule::getAddrOfCXXStructor(), GetFunctionType(), GetFunctionTypeForVTable(), clang::CodeGen::CGObjCRuntime::getMessageSendInfo(), clang::CodeGen::CodeGenFunction::startOutlinedSEHHelper(), and clang::CodeGen::CodeGenModule::TryEmitDefinitionAsAlias().

llvm::FunctionType * CodeGenTypes::GetFunctionType ( GlobalDecl  GD)

Definition at line 1247 of file CGCall.cpp.

References arrangeGlobalDeclaration(), and GetFunctionType().

llvm::Type * CodeGenTypes::GetFunctionTypeForVTable ( GlobalDecl  GD)

GetFunctionTypeForVTable - Get the LLVM function type for use in a vtable, given a CXXMethodDecl. If the method to has an incomplete return type, and/or incomplete argument types, this will return the opaque type.

Definition at line 1372 of file CGCall.cpp.

References arrangeCXXMethodDeclaration(), arrangeCXXStructorDeclaration(), clang::Type::getAs(), clang::GlobalDecl::getDecl(), clang::GlobalDecl::getDtorType(), clang::CodeGen::getFromDtorType(), GetFunctionType(), getLLVMContext(), clang::ValueDecl::getType(), and isFuncTypeConvertible().

Referenced by clang::CodeGen::CodeGenVTables::CreateVTableInitializer(), and clang::CodeGen::CodeGenModule::GetAddrOfThunk().

llvm::LLVMContext& clang::CodeGen::CodeGenTypes::getLLVMContext ( )
inline
const TargetInfo& clang::CodeGen::CodeGenTypes::getTarget ( ) const
inline
bool CodeGenTypes::isFuncParamTypeConvertible ( QualType  Ty)

isFuncParamTypeConvertible - Return true if the specified type in a function parameter or result position can be converted to an IR type at this point. This boils down to being whether it is complete, as well as whether we've temporarily deferred expanding the type because we're in a recursive context.

Definition at line 192 of file CodeGenTypes.cpp.

References clang::Type::getAs(), getCXXABI(), clang::RecordType::getDecl(), clang::Type::isIncompleteType(), clang::CodeGen::CGCXXABI::isMemberPointerConvertible(), and isSafeToConvert().

Referenced by isFuncTypeConvertible().

bool CodeGenTypes::isFuncTypeConvertible ( const FunctionType FT)

isFuncTypeConvertible - Utility to check whether a function type can be converted to an LLVM type (i.e. doesn't depend on an incomplete tag type).

Code to verify a given function type is complete, i.e. the return type and all of the parameter types are complete. Also check to see if we are in a RS_StructPointer context, and if so whether any struct types have been pended. If so, we don't want to ask the ABI lowering code to handle a type that cannot be converted to an IR type.

Definition at line 226 of file CodeGenTypes.cpp.

References clang::FunctionType::getReturnType(), and isFuncParamTypeConvertible().

Referenced by ConvertType(), and GetFunctionTypeForVTable().

bool clang::CodeGen::CodeGenTypes::isRecordBeingLaidOut ( const Type Ty) const
inline

Definition at line 317 of file CodeGenTypes.h.

Referenced by isSafeToConvert().

bool CodeGenTypes::isRecordLayoutComplete ( const Type Ty) const

isRecordLayoutComplete - Return true if the specified type is already completely laid out.

Definition at line 99 of file CodeGenTypes.cpp.

Referenced by isSafeToConvert().

bool CodeGenTypes::isZeroInitializable ( QualType  T)
bool CodeGenTypes::isZeroInitializable ( const RecordDecl RD)

IsZeroInitializable - Return whether a record type can be zero-initialized (in the C++ sense) with an LLVM zeroinitializer.

Definition at line 745 of file CodeGenTypes.cpp.

References getCGRecordLayout(), and clang::CodeGen::CGRecordLayout::isZeroInitializable().

bool clang::CodeGen::CodeGenTypes::noRecordsBeingLaidOut ( ) const
inline

Definition at line 314 of file CodeGenTypes.h.

Referenced by isSafeToConvert().

void CodeGenTypes::UpdateCompletedType ( const TagDecl TD)

UpdateCompletedType - When we find the full definition for a TagDecl, replace the 'opaque' type we previously made for it if applicable.

Definition at line 240 of file CodeGenTypes.cpp.

References ConvertRecordDeclType(), ConvertType(), clang::CodeGen::CodeGenModule::getModuleDebugInfo(), clang::ASTContext::getTagDeclType(), clang::QualType::getTypePtr(), and clang::TagDecl::isDependentType().

Referenced by clang::CodeGen::CodeGenModule::UpdateCompletedType().


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