clang  15.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/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/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 () 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, CodeGenFunction &CGF, 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 491 of file CGValue.h.

Member Enumeration Documentation

◆ IsAliased_t

Enumerator
IsNotAliased 
IsAliased 

Definition at line 550 of file CGValue.h.

◆ IsDestructed_t

Enumerator
IsNotDestructed 
IsDestructed 

Definition at line 551 of file CGValue.h.

◆ IsSanitizerChecked_t

Enumerator
IsNotSanitizerChecked 
IsSanitizerChecked 

Definition at line 555 of file CGValue.h.

◆ IsZeroed_t

Enumerator
IsNotZeroed 
IsZeroed 

Definition at line 552 of file CGValue.h.

◆ NeedsGCBarriers_t

Enumerator
DoesNotNeedGCBarriers 
NeedsGCBarriers 

Definition at line 554 of file CGValue.h.

◆ Overlap_t

Enumerator
DoesNotOverlap 
MayOverlap 

Definition at line 553 of file CGValue.h.

Member Function Documentation

◆ asRValue()

RValue clang::CodeGen::AggValueSlot::asRValue ( ) 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 574 of file CGValue.h.

References isZeroed(), and mayOverlap().

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,
CodeGenFunction CGF,
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 635 of file CGValue.h.

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

◆ getObjCLifetime()

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

Definition at line 615 of file CGValue.h.

References clang::Qualifiers::getObjCLifetime().

◆ getPointer()

llvm::Value* clang::CodeGen::AggValueSlot::getPointer ( ) const
inline

Definition at line 623 of file CGValue.h.

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

◆ 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 667 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 602 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 595 of file CGValue.h.

◆ isIgnored()

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

◆ isPotentiallyAliased()

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

Definition at line 639 of file CGValue.h.

◆ isSanitizerChecked()

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

◆ isVolatile()

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

Definition at line 604 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 619 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 659 of file CGValue.h.

References V.

Referenced by CheckAggExprForMemSetUse().


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