clang 23.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 93 of file CIRTypes.h.

Constructor & Destructor Documentation

◆ RecordType() [1/2]

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

Definition at line 101 of file CIRTypes.h.

Referenced by isLayoutIdentical().

◆ RecordType() [2/2]

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

Definition at line 103 of file CIRTypes.h.

Member Function Documentation

◆ classof()

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

Definition at line 105 of file CIRTypes.h.

◆ complete()

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

Definition at line 535 of file CIRTypes.cpp.

References s.

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

◆ getABIConvertedName()

mlir::StringAttr RecordType::getABIConvertedName ( ) const

Definition at line 568 of file CIRTypes.cpp.

References s.

◆ getElementOffset()

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

Definition at line 544 of file CIRTypes.cpp.

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

◆ getElementType()

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

Definition at line 121 of file CIRTypes.h.

References getMembers().

◆ getKindAsStr()

std::string RecordType::getKindAsStr ( ) const

Definition at line 527 of file CIRTypes.cpp.

Referenced by getPrefixedName().

◆ getMembers()

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

◆ getName()

mlir::StringAttr RecordType::getName ( ) const

Definition at line 497 of file CIRTypes.cpp.

References s.

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

◆ getNumElements()

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

Definition at line 120 of file CIRTypes.h.

References getMembers().

◆ getPacked()

bool RecordType::getPacked ( ) const

Definition at line 507 of file CIRTypes.cpp.

References s.

◆ getPadded()

bool RecordType::getPadded ( ) const

Definition at line 512 of file CIRTypes.cpp.

References s.

◆ getPrefixedName()

std::string RecordType::getPrefixedName ( ) const

Definition at line 532 of file CIRTypes.cpp.

References getKindAsStr(), and getName().

◆ isABIConvertedRecord()

bool RecordType::isABIConvertedRecord ( ) const

Definition at line 563 of file CIRTypes.cpp.

References s.

◆ isClass()

bool RecordType::isClass ( ) const

Definition at line 517 of file CIRTypes.cpp.

References s.

◆ isComplete()

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

Definition at line 112 of file CIRTypes.h.

References isIncomplete().

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

◆ isIncomplete()

bool RecordType::isIncomplete ( ) const

Definition at line 502 of file CIRTypes.cpp.

References s.

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

◆ isLayoutIdentical()

bool RecordType::isLayoutIdentical ( const RecordType & other)

Definition at line 550 of file CIRTypes.cpp.

References RecordType(), and s.

◆ isStruct()

bool RecordType::isStruct ( ) const

Definition at line 522 of file CIRTypes.cpp.

References s.

◆ isUnion()

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

Definition at line 118 of file CIRTypes.h.

◆ removeABIConversionNamePrefix()

void RecordType::removeABIConversionNamePrefix ( )

Definition at line 573 of file CIRTypes.cpp.

References s.


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