clang 19.0.0git
Public Member Functions | Friends | List of all members
clang::CodeGen::CGRecordLayout Class Reference

CGRecordLayout - This class handles struct and union layout info while lowering AST types to LLVM types. More...

#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CodeGen/CGRecordLayout.h"

Public Member Functions

 CGRecordLayout (llvm::StructType *CompleteObjectType, llvm::StructType *BaseSubobjectType, bool IsZeroInitializable, bool IsZeroInitializableAsBase)
 
llvm::StructType * getLLVMType () const
 Return the "complete object" LLVM type associated with this record.
 
llvm::StructType * getBaseSubobjectLLVMType () const
 Return the "base subobject" LLVM type associated with this record.
 
bool isZeroInitializable () const
 Check whether this struct can be C++ zero-initialized with a zeroinitializer.
 
bool isZeroInitializableAsBase () const
 Check whether this struct can be C++ zero-initialized with a zeroinitializer when considered as a base subobject.
 
unsigned getLLVMFieldNo (const FieldDecl *FD) const
 Return llvm::StructType element number that corresponds to the field FD.
 
bool hasNonVirtualBaseLLVMField (const CXXRecordDecl *RD) const
 
unsigned getNonVirtualBaseLLVMFieldNo (const CXXRecordDecl *RD) const
 
unsigned getVirtualBaseIndex (const CXXRecordDecl *base) const
 Return the LLVM field index corresponding to the given virtual base.
 
const CGBitFieldInfogetBitFieldInfo (const FieldDecl *FD) const
 Return the BitFieldInfo that corresponds to the field FD.
 
void print (raw_ostream &OS) const
 
void dump () const
 

Friends

class CodeGenTypes
 

Detailed Description

CGRecordLayout - This class handles struct and union layout info while lowering AST types to LLVM types.

These layout objects are only created on demand as IR generation requires.

Definition at line 122 of file CGRecordLayout.h.

Constructor & Destructor Documentation

◆ CGRecordLayout()

clang::CodeGen::CGRecordLayout::CGRecordLayout ( llvm::StructType *  CompleteObjectType,
llvm::StructType *  BaseSubobjectType,
bool  IsZeroInitializable,
bool  IsZeroInitializableAsBase 
)
inline

Definition at line 163 of file CGRecordLayout.h.

Member Function Documentation

◆ dump()

LLVM_DUMP_METHOD void CGRecordLayout::dump ( ) const

Definition at line 1248 of file CGRecordLayoutBuilder.cpp.

References print().

◆ getBaseSubobjectLLVMType()

llvm::StructType * clang::CodeGen::CGRecordLayout::getBaseSubobjectLLVMType ( ) const
inline

Return the "base subobject" LLVM type associated with this record.

Definition at line 180 of file CGRecordLayout.h.

Referenced by EmitNullConstant().

◆ getBitFieldInfo()

const CGBitFieldInfo & clang::CodeGen::CGRecordLayout::getBitFieldInfo ( const FieldDecl FD) const
inline

Return the BitFieldInfo that corresponds to the field FD.

Definition at line 223 of file CGRecordLayout.h.

References clang::FieldDecl::getCanonicalDecl(), and clang::FieldDecl::isBitField().

Referenced by setUsedBits().

◆ getLLVMFieldNo()

unsigned clang::CodeGen::CGRecordLayout::getLLVMFieldNo ( const FieldDecl FD) const
inline

Return llvm::StructType element number that corresponds to the field FD.

Definition at line 198 of file CGRecordLayout.h.

References clang::FieldDecl::getCanonicalDecl().

Referenced by emitAddrOfFieldStorage(), EmitNullConstant(), emitPreserveStructAccess(), getGEPIndicesToField(), and clang::CodeGen::getLLVMFieldNumber().

◆ getLLVMType()

llvm::StructType * clang::CodeGen::CGRecordLayout::getLLVMType ( ) const
inline

Return the "complete object" LLVM type associated with this record.

Definition at line 174 of file CGRecordLayout.h.

Referenced by EmitNullConstant().

◆ getNonVirtualBaseLLVMFieldNo()

unsigned clang::CodeGen::CGRecordLayout::getNonVirtualBaseLLVMFieldNo ( const CXXRecordDecl RD) const
inline

Definition at line 210 of file CGRecordLayout.h.

Referenced by EmitNullConstant().

◆ getVirtualBaseIndex()

unsigned clang::CodeGen::CGRecordLayout::getVirtualBaseIndex ( const CXXRecordDecl base) const
inline

Return the LLVM field index corresponding to the given virtual base.

Only valid when operating on the complete object.

Definition at line 217 of file CGRecordLayout.h.

Referenced by EmitNullConstant().

◆ hasNonVirtualBaseLLVMField()

bool clang::CodeGen::CGRecordLayout::hasNonVirtualBaseLLVMField ( const CXXRecordDecl RD) const
inline

Definition at line 206 of file CGRecordLayout.h.

◆ isZeroInitializable()

bool clang::CodeGen::CGRecordLayout::isZeroInitializable ( ) const
inline

Check whether this struct can be C++ zero-initialized with a zeroinitializer.

Definition at line 186 of file CGRecordLayout.h.

Referenced by clang::CodeGen::CodeGenTypes::isZeroInitializable().

◆ isZeroInitializableAsBase()

bool clang::CodeGen::CGRecordLayout::isZeroInitializableAsBase ( ) const
inline

Check whether this struct can be C++ zero-initialized with a zeroinitializer when considered as a base subobject.

Definition at line 192 of file CGRecordLayout.h.

Referenced by EmitNullConstantForBase().

◆ print()

void CGRecordLayout::print ( raw_ostream &  OS) const

Definition at line 1218 of file CGRecordLayoutBuilder.cpp.

References clang::RecordDecl::field_begin(), and clang::DeclContext::getParent().

Referenced by dump().

Friends And Related Function Documentation

◆ CodeGenTypes

friend class CodeGenTypes
friend

Definition at line 123 of file CGRecordLayout.h.


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