LLVM 22.0.0git
llvm::OptimizedStructLayoutField Struct Reference

A field in a structure. More...

#include "llvm/Support/OptimizedStructLayout.h"

Public Member Functions

 OptimizedStructLayoutField (const void *Id, uint64_t Size, Align Alignment, uint64_t FixedOffset=FlexibleOffset)
bool hasFixedOffset () const
 Return true if this field has been assigned a fixed offset.
uint64_t getEndOffset () const
 Given that this field has a fixed offset, return the offset of the first byte following it.

Public Attributes

uint64_t Offset
 The offset of this field in the final layout.
uint64_t Size
 The required size of this field in bytes.
const void * Id
 A opaque value which uniquely identifies this field.
void * Scratch
 Private scratch space for the algorithm.
Align Alignment
 The required alignment of this field.

Static Public Attributes

static constexpr uint64_t FlexibleOffset = ~(uint64_t)0
 A special value for Offset indicating that the field can be moved anywhere.

Detailed Description

A field in a structure.

Definition at line 46 of file OptimizedStructLayout.h.

Constructor & Destructor Documentation

◆ OptimizedStructLayoutField()

llvm::OptimizedStructLayoutField::OptimizedStructLayoutField ( const void * Id,
uint64_t Size,
Align Alignment,
uint64_t FixedOffset = FlexibleOffset )
inline

Definition at line 51 of file OptimizedStructLayout.h.

References Alignment, assert(), FlexibleOffset, Id, Offset, and Size.

Member Function Documentation

◆ getEndOffset()

uint64_t llvm::OptimizedStructLayoutField::getEndOffset ( ) const
inline

Given that this field has a fixed offset, return the offset of the first byte following it.

Definition at line 84 of file OptimizedStructLayout.h.

References assert(), hasFixedOffset(), Offset, and Size.

◆ hasFixedOffset()

bool llvm::OptimizedStructLayoutField::hasFixedOffset ( ) const
inline

Return true if this field has been assigned a fixed offset.

After layout, this will be true of all the fields.

Definition at line 78 of file OptimizedStructLayout.h.

References FlexibleOffset, and Offset.

Referenced by getEndOffset().

Member Data Documentation

◆ Alignment

Align llvm::OptimizedStructLayoutField::Alignment

The required alignment of this field.

Definition at line 74 of file OptimizedStructLayout.h.

Referenced by OptimizedStructLayoutField(), and llvm::performOptimizedStructLayout().

◆ FlexibleOffset

uint64_t llvm::OptimizedStructLayoutField::FlexibleOffset = ~(uint64_t)0
staticconstexpr

A special value for Offset indicating that the field can be moved anywhere.

Definition at line 49 of file OptimizedStructLayout.h.

Referenced by hasFixedOffset(), and OptimizedStructLayoutField().

◆ Id

const void* llvm::OptimizedStructLayoutField::Id

A opaque value which uniquely identifies this field.

Definition at line 67 of file OptimizedStructLayout.h.

Referenced by OptimizedStructLayoutField().

◆ Offset

uint64_t llvm::OptimizedStructLayoutField::Offset

The offset of this field in the final layout.

If this is initialized to FlexibleOffset, layout will overwrite it with the assigned offset of the field.

Definition at line 60 of file OptimizedStructLayout.h.

Referenced by getEndOffset(), hasFixedOffset(), and OptimizedStructLayoutField().

◆ Scratch

void* llvm::OptimizedStructLayoutField::Scratch

Private scratch space for the algorithm.

The implementation must treat this as uninitialized memory on entry.

Definition at line 71 of file OptimizedStructLayout.h.

Referenced by llvm::performOptimizedStructLayout().

◆ Size

uint64_t llvm::OptimizedStructLayoutField::Size

The required size of this field in bytes.

Does not have to be a multiple of Alignment. Must be non-zero.

Definition at line 64 of file OptimizedStructLayout.h.

Referenced by getEndOffset(), OptimizedStructLayoutField(), and llvm::performOptimizedStructLayout().


The documentation for this struct was generated from the following file: