LLVM: llvm::StructLayout Class Reference (original) (raw)
Used to lazily calculate structure layout information for a target machine, based on the DataLayout structure. More...
#include "[llvm/IR/DataLayout.h](DataLayout%5F8h%5Fsource.html)"
Public Member Functions | |
---|---|
TypeSize | getSizeInBytes () const |
TypeSize | getSizeInBits () const |
Align | getAlignment () const |
bool | hasPadding () const |
Returns whether the struct has padding or not between its fields. | |
unsigned | getElementContainingOffset (uint64_t FixedOffset) const |
Given a valid byte offset into the structure, returns the structure index that contains it. | |
MutableArrayRef< TypeSize > | getMemberOffsets () |
ArrayRef< TypeSize > | getMemberOffsets () const |
TypeSize | getElementOffset (unsigned Idx) const |
TypeSize | getElementOffsetInBits (unsigned Idx) const |
![]() |
|
const T * | getTrailingObjects () const |
Returns a pointer to the trailing object array of the given type (which must be one of those specified in the class template). | |
T * | getTrailingObjects () |
Returns a pointer to the trailing object array of the given type (which must be one of those specified in the class template). | |
TrailingObjects ()=default | |
TrailingObjects (const TrailingObjects &)=delete | |
TrailingObjects (TrailingObjects &&)=delete | |
TrailingObjects & | operator= (const TrailingObjects &)=delete |
TrailingObjects & | operator= (TrailingObjects &&)=delete |
Additional Inherited Members | |
---|---|
![]() |
|
static constexpr std::enable_if_t< std::is_same_v< Foo< TrailingTys... >, Foo< Tys... > >, size_t > | additionalSizeToAlloc (typename trailing_objects_internal::ExtractSecondType< TrailingTys, size_t >::type... Counts) |
Returns the size of the trailing data, if an object were allocated with the given counts (The counts are in the same order as the template arguments). | |
static constexpr std::enable_if_t< std::is_same_v< Foo< TrailingTys... >, Foo< Tys... > >, size_t > | totalSizeToAlloc (typename trailing_objects_internal::ExtractSecondType< TrailingTys, size_t >::type... Counts) |
Returns the total size of an object if it were allocated with the given trailing object counts. | |
Used to lazily calculate structure layout information for a target machine, based on the DataLayout structure.
Definition at line 567 of file DataLayout.h.
◆ getAlignment()
Align llvm::StructLayout::getAlignment ( ) const | inline |
---|
◆ getElementContainingOffset()
Given a valid byte offset into the structure, returns the structure index that contains it.
getElementContainingOffset - Given a valid offset into the structure, return the structure index that contains it.
Definition at line 92 of file DataLayout.cpp.
References assert(), llvm::ArrayRef< T >::begin(), llvm::ArrayRef< T >::end(), llvm::TypeSize::getFixed(), getMemberOffsets(), llvm::details::FixedOrScalableQuantity< TypeSize, uint64_t >::isKnownGT(), llvm::details::FixedOrScalableQuantity< TypeSize, uint64_t >::isKnownLE(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isScalable(), LHS, llvm::Offset, and RHS.
Referenced by findFuncPointers(), llvm::DataLayout::getGEPIndexForOffset(), llvm::getPointerAtOffset(), getTypePartition(), splitGlobal(), and stripAggregateTypeWrapping().
◆ getElementOffset()
Definition at line 596 of file DataLayout.h.
References assert(), getMemberOffsets(), and Idx.
Referenced by llvm::GEPOperator::accumulateConstantOffset(), llvm::GEPOperator::collectOffset(), computeKnownBitsFromOperator(), llvm::computeValueLLTs(), llvm::ComputeValueVTs(), emitGlobalConstantImpl(), emitGlobalConstantStruct(), findFuncPointers(), getElementOffsetInBits(), llvm::TargetTransformInfoImplCRTPBase< T >::getGEPCost(), llvm::DataLayout::getGEPIndexForOffset(), llvm::DataLayout::getIndexedOffsetInType(), llvm::GEPOperator::getMaxPreservedAlignment(), llvm::ScalarEvolution::getOffsetOfExpr(), llvm::getPointerAtOffset(), getTypePartition(), llvm::ExecutionEngine::InitializeMemory(), isGEPKnownNonNull(), llvm::FastISel::selectGetElementPtr(), and splitGlobal().
◆ getElementOffsetInBits()
TypeSize llvm::StructLayout::getElementOffsetInBits ( unsigned Idx) const | inline |
---|
◆ getMemberOffsets() [1/2]
◆ getMemberOffsets() [2/2]
◆ getSizeInBits()
TypeSize llvm::StructLayout::getSizeInBits ( ) const | inline |
---|
◆ getSizeInBytes()
TypeSize llvm::StructLayout::getSizeInBytes ( ) const | inline |
---|
◆ hasPadding()
bool llvm::StructLayout::hasPadding ( ) const | inline |
---|
Returns whether the struct has padding or not between its fields.
NB: Padding in nested element is not taken into account.
Definition at line 582 of file DataLayout.h.
◆ DataLayout
The documentation for this class was generated from the following files:
- include/llvm/IR/DataLayout.h
- lib/IR/DataLayout.cpp