clang 22.0.0git
clang::CIRGen::AggValueSlot Class Reference

An aggregate value slot. More...

#include "/work/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CIR/CodeGen/CIRGenValue.h"

Public Types

enum  IsDestructed_t { IsNotDestructed , IsDestructed }
 This is set to true if the slot might be aliased and it's not undefined behavior to access it through such an alias. More...
enum  IsZeroed_t { IsNotZeroed , IsZeroed }
enum  IsAliased_t { IsNotAliased , IsAliased }
enum  Overlap_t { MayOverlap , DoesNotOverlap }

Public Member Functions

 AggValueSlot (Address addr, clang::Qualifiers quals, bool destructedFlag, bool zeroedFlag, bool aliasedFlag, bool overlapFlag)
IsDestructed_t isExternallyDestructed () const
void setExternallyDestructed (bool destructed=true)
clang::Qualifiers getQualifiers () const
bool isVolatile () const
void setVolatile (bool flag)
Address getAddress () const
bool isIgnored () const
mlir::Value getPointer () const
Overlap_t mayOverlap () const
IsZeroed_t isZeroed () const
IsAliased_t isPotentiallyAliased () const
RValue asRValue () const

Static Public Member Functions

static AggValueSlot ignored ()
 Returns an aggregate value slot indicating that the aggregate value is being ignored.
static AggValueSlot forAddr (Address addr, clang::Qualifiers quals, IsDestructed_t isDestructed, IsAliased_t isAliased, Overlap_t mayOverlap, IsZeroed_t isZeroed=IsNotZeroed)
static AggValueSlot forLValue (const LValue &LV, IsDestructed_t isDestructed, IsAliased_t isAliased, Overlap_t mayOverlap, IsZeroed_t isZeroed=IsNotZeroed)

Detailed Description

An aggregate value slot.

Definition at line 302 of file CIRGenValue.h.

Member Enumeration Documentation

◆ IsAliased_t

Enumerator
IsNotAliased 
IsAliased 

Definition at line 343 of file CIRGenValue.h.

◆ IsDestructed_t

This is set to true if the slot might be aliased and it's not undefined behavior to access it through such an alias.

Note that it's always undefined behavior to access a C++ object that's under construction through an alias derived from outside the construction process.

This flag controls whether calls that produce the aggregate value may be evaluated directly into the slot, or whether they must be evaluated into an unaliased temporary and then memcpy'ed over. Since it's invalid in general to memcpy a non-POD C++ object, it's important that this flag never be set when evaluating an expression which constructs such an object. This is set to true if the tail padding of this slot might overlap another object that may have already been initialized (and whose value must be preserved by this initialization). If so, we may only store up to the dsize of the type. Otherwise we can widen stores to the size of the type.

Enumerator
IsNotDestructed 
IsDestructed 

Definition at line 341 of file CIRGenValue.h.

◆ IsZeroed_t

Enumerator
IsNotZeroed 
IsZeroed 

Definition at line 342 of file CIRGenValue.h.

◆ Overlap_t

Enumerator
MayOverlap 
DoesNotOverlap 

Definition at line 344 of file CIRGenValue.h.

Constructor & Destructor Documentation

◆ AggValueSlot()

clang::CIRGen::AggValueSlot::AggValueSlot ( Address addr,
clang::Qualifiers quals,
bool destructedFlag,
bool zeroedFlag,
bool aliasedFlag,
bool overlapFlag )
inline

Definition at line 353 of file CIRGenValue.h.

Referenced by forAddr(), forLValue(), and ignored().

Member Function Documentation

◆ asRValue()

◆ forAddr()

◆ forLValue()

◆ getAddress()

Address clang::CIRGen::AggValueSlot::getAddress ( ) const
inline

◆ getPointer()

mlir::Value clang::CIRGen::AggValueSlot::getPointer ( ) const
inline

Definition at line 396 of file CIRGenValue.h.

◆ getQualifiers()

clang::Qualifiers clang::CIRGen::AggValueSlot::getQualifiers ( ) const
inline

Definition at line 381 of file CIRGenValue.h.

◆ ignored()

AggValueSlot clang::CIRGen::AggValueSlot::ignored ( )
inlinestatic

◆ isExternallyDestructed()

IsDestructed_t clang::CIRGen::AggValueSlot::isExternallyDestructed ( ) const
inline

Definition at line 374 of file CIRGenValue.h.

◆ isIgnored()

bool clang::CIRGen::AggValueSlot::isIgnored ( ) const
inline

◆ isPotentiallyAliased()

IsAliased_t clang::CIRGen::AggValueSlot::isPotentiallyAliased ( ) const
inline

Definition at line 402 of file CIRGenValue.h.

◆ isVolatile()

bool clang::CIRGen::AggValueSlot::isVolatile ( ) const
inline

Definition at line 383 of file CIRGenValue.h.

◆ isZeroed()

IsZeroed_t clang::CIRGen::AggValueSlot::isZeroed ( ) const
inline

◆ mayOverlap()

Overlap_t clang::CIRGen::AggValueSlot::mayOverlap ( ) const
inline

Definition at line 398 of file CIRGenValue.h.

Referenced by forAddr(), and forLValue().

◆ setExternallyDestructed()

void clang::CIRGen::AggValueSlot::setExternallyDestructed ( bool destructed = true)
inline

Definition at line 377 of file CIRGenValue.h.

◆ setVolatile()

void clang::CIRGen::AggValueSlot::setVolatile ( bool flag)
inline

Definition at line 385 of file CIRGenValue.h.


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