clang  19.0.0git
Public Types | Public Member Functions | Static Public Member Functions | List of all members
clang::CodeGen::AggValueSlot Class Reference

An aggregate value slot. More...

#include "/home/runner/work/llvm/llvm/repo/clang/lib/CodeGen/CGValue.h"

Public Types

enum  IsAliased_t { IsNotAliased , IsAliased }
 
enum  IsDestructed_t { IsNotDestructed , IsDestructed }
 
enum  IsZeroed_t { IsNotZeroed , IsZeroed }
 
enum  Overlap_t { DoesNotOverlap , MayOverlap }
 
enum  NeedsGCBarriers_t { DoesNotNeedGCBarriers , NeedsGCBarriers }
 
enum  IsSanitizerChecked_t { IsNotSanitizerChecked , IsSanitizerChecked }
 

Public Member Functions

IsDestructed_t isExternallyDestructed () const
 
void setExternallyDestructed (bool destructed=true)
 
Qualifiers getQualifiers () const
 
bool isVolatile () const
 
void setVolatile (bool flag)
 
Qualifiers::ObjCLifetime getObjCLifetime () const
 
NeedsGCBarriers_t requiresGCollection () const
 
llvm::Value * getPointer (QualType PointeeTy, CodeGenFunction &CGF) const
 
llvm::Value * emitRawPointer (CodeGenFunction &CGF) const
 
Address getAddress () const
 
bool isIgnored () const
 
CharUnits getAlignment () const
 
IsAliased_t isPotentiallyAliased () const
 
Overlap_t mayOverlap () const
 
bool isSanitizerChecked () const
 
RValue asRValue () const
 
void setZeroed (bool V=true)
 
IsZeroed_t isZeroed () const
 
CharUnits getPreferredSize (ASTContext &Ctx, QualType Type) const
 Get the preferred size to use when storing a value to this slot. More...
 

Static Public Member Functions

static AggValueSlot ignored ()
 ignored - Returns an aggregate value slot indicating that the aggregate value is being ignored. More...
 
static AggValueSlot forAddr (Address addr, Qualifiers quals, IsDestructed_t isDestructed, NeedsGCBarriers_t needsGC, IsAliased_t isAliased, Overlap_t mayOverlap, IsZeroed_t isZeroed=IsNotZeroed, IsSanitizerChecked_t isChecked=IsNotSanitizerChecked)
 forAddr - Make a slot for an aggregate value. More...
 
static AggValueSlot forLValue (const LValue &LV, IsDestructed_t isDestructed, NeedsGCBarriers_t needsGC, IsAliased_t isAliased, Overlap_t mayOverlap, IsZeroed_t isZeroed=IsNotZeroed, IsSanitizerChecked_t isChecked=IsNotSanitizerChecked)
 

Detailed Description

An aggregate value slot.

Definition at line 509 of file CGValue.h.

Member Enumeration Documentation

◆ IsAliased_t

Enumerator
IsNotAliased 
IsAliased 

Definition at line 568 of file CGValue.h.

◆ IsDestructed_t

Enumerator
IsNotDestructed 
IsDestructed 

Definition at line 569 of file CGValue.h.

◆ IsSanitizerChecked_t

Enumerator
IsNotSanitizerChecked 
IsSanitizerChecked 

Definition at line 573 of file CGValue.h.

◆ IsZeroed_t

Enumerator
IsNotZeroed 
IsZeroed 

Definition at line 570 of file CGValue.h.

◆ NeedsGCBarriers_t

Enumerator
DoesNotNeedGCBarriers 
NeedsGCBarriers 

Definition at line 572 of file CGValue.h.

◆ Overlap_t

Enumerator
DoesNotOverlap 
MayOverlap 

Definition at line 571 of file CGValue.h.

Member Function Documentation

◆ asRValue()

RValue clang::CodeGen::AggValueSlot::asRValue ( ) const
inline

◆ emitRawPointer()

llvm::Value* clang::CodeGen::AggValueSlot::emitRawPointer ( CodeGenFunction CGF) const
inline

◆ forAddr()

static AggValueSlot clang::CodeGen::AggValueSlot::forAddr ( Address  addr,
Qualifiers  quals,
IsDestructed_t  isDestructed,
NeedsGCBarriers_t  needsGC,
IsAliased_t  isAliased,
Overlap_t  mayOverlap,
IsZeroed_t  isZeroed = IsNotZeroed,
IsSanitizerChecked_t  isChecked = IsNotSanitizerChecked 
)
inlinestatic

forAddr - Make a slot for an aggregate value.

Parameters
quals- The qualifiers that dictate how the slot should be initialied. Only 'volatile' and the Objective-C lifetime qualifiers matter.
isDestructed- true if something else is responsible for calling destructors on this object
needsGC- true if the slot is potentially located somewhere that ObjC GC calls should be emitted for

Definition at line 592 of file CGValue.h.

References clang::CodeGen::Address::isValid(), isZeroed(), mayOverlap(), and clang::CodeGen::Address::setKnownNonNull().

Referenced by createPlaceholderSlot(), clang::CodeGen::CodeGenFunction::EmitAnyExprToMem(), EmitBaseInitializer(), clang::CodeGen::CodeGenFunction::EmitCXXAggrConstructorCall(), clang::CodeGen::CodeGenFunction::EmitDelegatingCXXConstructorCall(), clang::CodeGen::CodeGenFunction::EmitMaterializeTemporaryExpr(), clang::CodeGen::CodeGenFunction::EmitNewArrayInitializer(), forLValue(), clang::CodeGen::CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction(), ignored(), InitCatchParam(), and StoreAnyExprIntoOneUnit().

◆ forLValue()

static AggValueSlot clang::CodeGen::AggValueSlot::forLValue ( const LValue LV,
IsDestructed_t  isDestructed,
NeedsGCBarriers_t  needsGC,
IsAliased_t  isAliased,
Overlap_t  mayOverlap,
IsZeroed_t  isZeroed = IsNotZeroed,
IsSanitizerChecked_t  isChecked = IsNotSanitizerChecked 
)
inlinestatic

◆ getAddress()

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

◆ getAlignment()

CharUnits clang::CodeGen::AggValueSlot::getAlignment ( ) const
inline

Definition at line 655 of file CGValue.h.

References clang::CodeGen::Address::getAlignment().

◆ getObjCLifetime()

Qualifiers::ObjCLifetime clang::CodeGen::AggValueSlot::getObjCLifetime ( ) const
inline

Definition at line 635 of file CGValue.h.

References clang::Qualifiers::getObjCLifetime().

◆ getPointer()

llvm::Value* clang::CodeGen::AggValueSlot::getPointer ( QualType  PointeeTy,
CodeGenFunction CGF 
) const

◆ getPreferredSize()

CharUnits clang::CodeGen::AggValueSlot::getPreferredSize ( ASTContext Ctx,
QualType  Type 
) const
inline

Get the preferred size to use when storing a value to this slot.

This is the type size unless that might overlap another object, in which case it's the dsize.

Definition at line 687 of file CGValue.h.

References clang::ASTContext::getTypeInfoDataSizeInChars(), clang::ASTContext::getTypeSizeInChars(), mayOverlap(), and clang::TypeInfoChars::Width.

Referenced by CheckAggExprForMemSetUse().

◆ getQualifiers()

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

Definition at line 622 of file CGValue.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall().

◆ ignored()

static AggValueSlot clang::CodeGen::AggValueSlot::ignored ( )
inlinestatic

◆ isExternallyDestructed()

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

Definition at line 615 of file CGValue.h.

◆ isIgnored()

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

◆ isPotentiallyAliased()

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

Definition at line 659 of file CGValue.h.

◆ isSanitizerChecked()

bool clang::CodeGen::AggValueSlot::isSanitizerChecked ( ) const
inline

◆ isVolatile()

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

Definition at line 624 of file CGValue.h.

References clang::Qualifiers::hasVolatile().

Referenced by asRValue(), and CheckAggExprForMemSetUse().

◆ isZeroed()

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

◆ mayOverlap()

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

◆ requiresGCollection()

NeedsGCBarriers_t clang::CodeGen::AggValueSlot::requiresGCollection ( ) const
inline

Definition at line 639 of file CGValue.h.

◆ setExternallyDestructed()

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

◆ setVolatile()

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

◆ setZeroed()

void clang::CodeGen::AggValueSlot::setZeroed ( bool  V = true)
inline

Definition at line 679 of file CGValue.h.

References V.

Referenced by CheckAggExprForMemSetUse().


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