clang 24.0.0git
cir::RecordType Class Reference

C++ view class that accepts both !cir.struct and !cir.union types. More...

#include "clang/CIR/Dialect/IR/CIRTypes.h"

Inheritance diagram for cir::RecordType:
[legend]

Public Member Functions

 RecordType (StructType t)
 RecordType (UnionType t)
llvm::ArrayRef< mlir::Type > getMembers () const
mlir::StringAttr getName () const
bool isIncomplete () const
bool isComplete () const
bool getPacked () const
bool getPadded () const
bool isClass () const
bool isStruct () const
bool isUnion () const
size_t getNumElements () const
mlir::Type getElementType (size_t idx) const
std::string getKindAsStr () const
std::string getPrefixedName () const
void complete (llvm::ArrayRef< mlir::Type > members, bool packed, bool padded, mlir::Type padding={})
uint64_t getElementOffset (const mlir::DataLayout &dataLayout, unsigned idx) const
bool isLayoutIdentical (const RecordType &other)
bool isABIConvertedRecord () const
mlir::StringAttr getABIConvertedName () const
void removeABIConversionNamePrefix ()

Static Public Member Functions

static bool classof (mlir::Type t)

Detailed Description

C++ view class that accepts both !cir.struct and !cir.union types.

Follows the MLIR BaseMemRefType pattern: StructType and UnionType are the concrete tablegen types; RecordType is a hand-written view class that covers both. Use it when code must handle either kind generically.

Methods that are common to both types are forwarded through dyn_cast dispatch. Type-specific methods (getPadding, getUnionStorageType) are only available on the concrete type.

Definition at line 103 of file CIRTypes.h.

Constructor & Destructor Documentation

◆ RecordType() [1/2]

cir::RecordType::RecordType ( StructType t)
inline

Definition at line 111 of file CIRTypes.h.

Referenced by isLayoutIdentical().

◆ RecordType() [2/2]

cir::RecordType::RecordType ( UnionType t)
inline

Definition at line 113 of file CIRTypes.h.

Member Function Documentation

◆ classof()

bool cir::RecordType::classof ( mlir::Type t)
inlinestatic

Definition at line 115 of file CIRTypes.h.

◆ complete()

void RecordType::complete ( llvm::ArrayRef< mlir::Type > members,
bool packed,
bool padded,
mlir::Type padding = {} )

Definition at line 562 of file CIRTypes.cpp.

Referenced by clang::CIRGen::CIRGenTypes::computeRecordLayout().

◆ getABIConvertedName()

mlir::StringAttr RecordType::getABIConvertedName ( ) const

Definition at line 595 of file CIRTypes.cpp.

◆ getElementOffset()

uint64_t RecordType::getElementOffset ( const mlir::DataLayout & dataLayout,
unsigned idx ) const

Definition at line 571 of file CIRTypes.cpp.

Referenced by clang::CIRGen::CIRGenFunction::emitAddrOfFieldStorage().

◆ getElementType()

mlir::Type cir::RecordType::getElementType ( size_t idx) const
inline

Definition at line 131 of file CIRTypes.h.

References getMembers().

◆ getKindAsStr()

std::string RecordType::getKindAsStr ( ) const

Definition at line 554 of file CIRTypes.cpp.

Referenced by getPrefixedName().

◆ getMembers()

llvm::ArrayRef< mlir::Type > RecordType::getMembers ( ) const

◆ getName()

mlir::StringAttr RecordType::getName ( ) const

◆ getNumElements()

size_t cir::RecordType::getNumElements ( ) const
inline

Definition at line 130 of file CIRTypes.h.

References getMembers().

◆ getPacked()

bool RecordType::getPacked ( ) const

Definition at line 534 of file CIRTypes.cpp.

◆ getPadded()

bool RecordType::getPadded ( ) const

Definition at line 539 of file CIRTypes.cpp.

◆ getPrefixedName()

std::string RecordType::getPrefixedName ( ) const

Definition at line 559 of file CIRTypes.cpp.

References getKindAsStr(), and getName().

◆ isABIConvertedRecord()

bool RecordType::isABIConvertedRecord ( ) const

Definition at line 590 of file CIRTypes.cpp.

◆ isClass()

bool RecordType::isClass ( ) const

Definition at line 544 of file CIRTypes.cpp.

◆ isComplete()

bool cir::RecordType::isComplete ( ) const
inline

Definition at line 122 of file CIRTypes.h.

References isIncomplete().

Referenced by clang::CIRGen::CIRGenTypes::convertRecordDeclType().

◆ isIncomplete()

bool RecordType::isIncomplete ( ) const

Definition at line 529 of file CIRTypes.cpp.

Referenced by clang::CIRGen::CIRGenTypes::computeRecordLayout(), and isComplete().

◆ isLayoutIdentical()

bool RecordType::isLayoutIdentical ( const RecordType & other)

Definition at line 577 of file CIRTypes.cpp.

References RecordType().

◆ isStruct()

bool RecordType::isStruct ( ) const

Definition at line 549 of file CIRTypes.cpp.

Referenced by cir::CIRABIRewriteContext::rewriteCallSite().

◆ isUnion()

bool cir::RecordType::isUnion ( ) const
inline

Definition at line 128 of file CIRTypes.h.

◆ removeABIConversionNamePrefix()

void RecordType::removeABIConversionNamePrefix ( )

Definition at line 600 of file CIRTypes.cpp.


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