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

An aggregate value slot. More...

#include <CGValue.h>

Public Types

enum  IsAliased_t { IsNotAliased, IsAliased }
 
enum  IsDestructed_t { IsNotDestructed, IsDestructed }
 
enum  IsZeroed_t { IsNotZeroed, IsZeroed }
 
enum  NeedsGCBarriers_t { DoesNotNeedGCBarriers, NeedsGCBarriers }
 

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::ValuegetAddr () const
 
bool isIgnored () const
 
CharUnits getAlignment () const
 
IsAliased_t isPotentiallyAliased () const
 
RValue asRValue () const
 
void setZeroed (bool V=true)
 
IsZeroed_t isZeroed () const
 

Static Public Member Functions

static AggValueSlot ignored ()
 
static AggValueSlot forAddr (llvm::Value *addr, CharUnits align, Qualifiers quals, IsDestructed_t isDestructed, NeedsGCBarriers_t needsGC, IsAliased_t isAliased, IsZeroed_t isZeroed=IsNotZeroed)
 
static AggValueSlot forLValue (const LValue &LV, IsDestructed_t isDestructed, NeedsGCBarriers_t needsGC, IsAliased_t isAliased, IsZeroed_t isZeroed=IsNotZeroed)
 

Detailed Description

An aggregate value slot.

Definition at line 363 of file CGValue.h.

Member Enumeration Documentation

Enumerator
IsNotAliased 
IsAliased 

Definition at line 402 of file CGValue.h.

Enumerator
IsNotDestructed 
IsDestructed 

Definition at line 403 of file CGValue.h.

Enumerator
IsNotZeroed 
IsZeroed 

Definition at line 404 of file CGValue.h.

Enumerator
DoesNotNeedGCBarriers 
NeedsGCBarriers 

Definition at line 405 of file CGValue.h.

Member Function Documentation

RValue clang::CodeGen::AggValueSlot::asRValue ( ) const
inline
static AggValueSlot clang::CodeGen::AggValueSlot::forAddr ( llvm::Value addr,
CharUnits  align,
Qualifiers  quals,
IsDestructed_t  isDestructed,
NeedsGCBarriers_t  needsGC,
IsAliased_t  isAliased,
IsZeroed_t  isZeroed = IsNotZeroed 
)
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 424 of file CGValue.h.

References clang::CharUnits::getQuantity(), and isZeroed().

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

static AggValueSlot clang::CodeGen::AggValueSlot::forLValue ( const LValue LV,
IsDestructed_t  isDestructed,
NeedsGCBarriers_t  needsGC,
IsAliased_t  isAliased,
IsZeroed_t  isZeroed = IsNotZeroed 
)
inlinestatic
llvm::Value* clang::CodeGen::AggValueSlot::getAddr ( ) const
inline
CharUnits clang::CodeGen::AggValueSlot::getAlignment ( ) const
inline
Qualifiers::ObjCLifetime clang::CodeGen::AggValueSlot::getObjCLifetime ( ) const
inline

Definition at line 467 of file CGValue.h.

References clang::Qualifiers::getObjCLifetime().

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

Definition at line 457 of file CGValue.h.

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

ignored - Returns an aggregate value slot indicating that the aggregate value is being ignored.

Definition at line 409 of file CGValue.h.

References DoesNotNeedGCBarriers, forAddr(), IsNotAliased, and IsNotDestructed.

Referenced by clang::CodeGen::CodeGenFunction::EmitAnyExprToTemp(), and clang::CodeGen::CodeGenFunction::EmitIgnoredExpr().

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

Definition at line 450 of file CGValue.h.

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

Definition at line 487 of file CGValue.h.

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

Definition at line 459 of file CGValue.h.

References clang::Qualifiers::hasVolatile().

Referenced by asRValue(), and CheckAggExprForMemSetUse().

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

Definition at line 471 of file CGValue.h.

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

Definition at line 463 of file CGValue.h.

References clang::Qualifiers::setVolatile().

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

Definition at line 496 of file CGValue.h.

Referenced by CheckAggExprForMemSetUse().


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