clang  3.9.0
Public Member Functions | Static Public Member Functions | List of all members
clang::CodeGen::LValue Class Reference

LValue - This represents an lvalue references. More...

#include <CGValue.h>

Collaboration diagram for clang::CodeGen::LValue:
[legend]

Public Member Functions

bool isSimple () const
 
bool isVectorElt () const
 
bool isBitField () const
 
bool isExtVectorElt () const
 
bool isGlobalReg () const
 
bool isVolatileQualified () const
 
bool isRestrictQualified () const
 
unsigned getVRQualifiers () const
 
QualType getType () const
 
Qualifiers::ObjCLifetime getObjCLifetime () const
 
bool isObjCIvar () const
 
void setObjCIvar (bool Value)
 
bool isObjCArray () const
 
void setObjCArray (bool Value)
 
bool isNonGC () const
 
void setNonGC (bool Value)
 
bool isGlobalObjCRef () const
 
void setGlobalObjCRef (bool Value)
 
bool isThreadLocalRef () const
 
void setThreadLocalRef (bool Value)
 
ARCPreciseLifetime_t isARCPreciseLifetime () const
 
void setARCPreciseLifetime (ARCPreciseLifetime_t value)
 
bool isNontemporal () const
 
void setNontemporal (bool Value)
 
bool isObjCWeak () const
 
bool isObjCStrong () const
 
bool isVolatile () const
 
ExprgetBaseIvarExp () const
 
void setBaseIvarExp (Expr *V)
 
QualType getTBAABaseType () const
 
void setTBAABaseType (QualType T)
 
uint64_t getTBAAOffset () const
 
void setTBAAOffset (uint64_t O)
 
llvm::MDNode * getTBAAInfo () const
 
void setTBAAInfo (llvm::MDNode *N)
 
const QualifiersgetQuals () const
 
QualifiersgetQuals ()
 
unsigned getAddressSpace () const
 
CharUnits getAlignment () const
 
void setAlignment (CharUnits A)
 
AlignmentSource getAlignmentSource () const
 
void setAlignmentSource (AlignmentSource Source)
 
llvm::ValuegetPointer () const
 
Address getAddress () const
 
void setAddress (Address address)
 
Address getVectorAddress () const
 
llvm::ValuegetVectorPointer () const
 
llvm::ValuegetVectorIdx () const
 
Address getExtVectorAddress () const
 
llvm::ValuegetExtVectorPointer () const
 
llvm::Constant * getExtVectorElts () const
 
Address getBitFieldAddress () const
 
llvm::ValuegetBitFieldPointer () const
 
const CGBitFieldInfogetBitFieldInfo () const
 
llvm::ValuegetGlobalReg () const
 
RValue asAggregateRValue () const
 

Static Public Member Functions

static LValue MakeAddr (Address address, QualType type, ASTContext &Context, AlignmentSource alignSource, llvm::MDNode *TBAAInfo=nullptr)
 
static LValue MakeVectorElt (Address vecAddress, llvm::Value *Idx, QualType type, AlignmentSource alignSource)
 
static LValue MakeExtVectorElt (Address vecAddress, llvm::Constant *Elts, QualType type, AlignmentSource alignSource)
 
static LValue MakeBitfield (Address Addr, const CGBitFieldInfo &Info, QualType type, AlignmentSource alignSource)
 Create a new object to represent a bit-field access. More...
 
static LValue MakeGlobalReg (Address Reg, QualType type)
 

Detailed Description

LValue - This represents an lvalue references.

Because C/C++ allow bitfields, this is not a simple LLVM pointer, it may be a pointer plus a bitrange.

Definition at line 152 of file CGValue.h.

Member Function Documentation

RValue clang::CodeGen::LValue::asAggregateRValue ( ) const
inline
Address clang::CodeGen::LValue::getAddress ( ) const
inline

Definition at line 331 of file CGValue.h.

References getAlignment(), and getPointer().

Referenced by asAggregateRValue(), castValueFromUintptr(), drillIntoBlockVariable(), clang::CodeGen::CodeGenFunction::EmitARCStoreStrong(), clang::CodeGen::CodeGenFunction::EmitArraySubscriptExpr(), clang::CodeGen::CodeGenFunction::EmitAtomicCompareExchange(), clang::CodeGen::CodeGenFunction::EmitAtomicStore(), clang::CodeGen::CodeGenFunction::EmitBlockLiteral(), clang::CodeGen::CodeGenFunction::EmitCallArg(), clang::CodeGen::CodeGenFunction::EmitCallExpr(), clang::CodeGen::CodeGenFunction::EmitCastLValue(), emitCombinerOrInitializer(), clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall(), clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorMemberCallExpr(), clang::CodeGen::CodeGenFunction::EmitCXXMemberPointerCallExpr(), clang::CodeGen::CodeGenFunction::EmitExtVectorElementExpr(), clang::CodeGen::CodeGenFunction::EmitInitializerForField(), clang::CodeGen::CodeGenFunction::EmitLoadOfLValue(), clang::CodeGen::CodeGenFunction::EmitLoadOfScalar(), clang::CodeGen::CodeGenFunction::EmitLValueForField(), clang::CodeGen::CodeGenFunction::EmitLValueForFieldInitialization(), EmitMemberInitializer(), clang::CodeGen::CodeGenFunction::EmitMSVAListRef(), clang::CodeGen::CodeGenFunction::EmitObjCIsaExpr(), clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr(), emitOMPArraySectionBase(), emitOMPAtomicRMW(), clang::CodeGen::CodeGenFunction::EmitOMPCopyinClause(), clang::CodeGen::CodeGenFunction::EmitOMPDistributeLoop(), clang::CodeGen::CodeGenFunction::EmitOMPFirstprivateClause(), clang::CodeGen::CodeGenFunction::EmitOMPLastprivateClauseInit(), clang::CodeGen::CodeGenFunction::EmitOMPLinearClauseFinal(), clang::CodeGen::CodeGenFunction::EmitOMPPrivateLoopCounters(), clang::CodeGen::CodeGenFunction::EmitOMPReductionClauseInit(), clang::CodeGen::CodeGenFunction::EmitParmDecl(), clang::CodeGen::CodeGenFunction::EmitPointerWithAlignment(), emitPrivatesInit(), emitProxyTaskFunction(), clang::CodeGen::CodeGenFunction::EmitScalarInit(), clang::CodeGen::CodeGenFunction::EmitStoreOfScalar(), clang::CodeGen::CodeGenFunction::EmitStoreThroughLValue(), clang::CodeGen::emitTaskLoopCall(), EmitTypeidFromVTable(), clang::CodeGen::CodeGenFunction::EmitUnaryOpLValue(), clang::CodeGen::CodeGenFunction::EmitVAListRef(), emitWriteback(), emitWritebackArg(), clang::CodeGen::AggValueSlot::forLValue(), clang::CodeGen::CodeGenFunction::GenerateCapturedStmtArgument(), clang::CodeGen::CodeGenFunction::generateObjCGetterBody(), clang::CodeGen::CodeGenFunction::GenerateOpenMPCapturedStmtFunction(), clang::CodeGen::CodeGenFunction::GenerateOpenMPCapturedVars(), loadToBegin(), clang::CodeGen::CodeGenFunction::StartFunction(), tryEmitARCCopyWeakInit(), and tryEmitARCRetainLoadOfScalar().

unsigned clang::CodeGen::LValue::getAddressSpace ( ) const
inline

Definition at line 314 of file CGValue.h.

References clang::Qualifiers::getAddressSpace().

CharUnits clang::CodeGen::LValue::getAlignment ( ) const
inline
AlignmentSource clang::CodeGen::LValue::getAlignmentSource ( ) const
inline
Expr* clang::CodeGen::LValue::getBaseIvarExp ( ) const
inline

Definition at line 299 of file CGValue.h.

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

Address clang::CodeGen::LValue::getBitFieldAddress ( ) const
inline
const CGBitFieldInfo& clang::CodeGen::LValue::getBitFieldInfo ( ) const
inline
llvm::Value* clang::CodeGen::LValue::getBitFieldPointer ( ) const
inline

Definition at line 362 of file CGValue.h.

References isBitField().

Referenced by getBitFieldAddress().

Address clang::CodeGen::LValue::getExtVectorAddress ( ) const
inline
llvm::Constant* clang::CodeGen::LValue::getExtVectorElts ( ) const
inline
llvm::Value* clang::CodeGen::LValue::getExtVectorPointer ( ) const
inline

Definition at line 349 of file CGValue.h.

References isExtVectorElt().

Referenced by getExtVectorAddress().

llvm::Value* clang::CodeGen::LValue::getGlobalReg ( ) const
inline
Qualifiers::ObjCLifetime clang::CodeGen::LValue::getObjCLifetime ( ) const
inline
llvm::Value* clang::CodeGen::LValue::getPointer ( ) const
inline
const Qualifiers& clang::CodeGen::LValue::getQuals ( ) const
inline
Qualifiers& clang::CodeGen::LValue::getQuals ( )
inline

Definition at line 312 of file CGValue.h.

QualType clang::CodeGen::LValue::getTBAABaseType ( ) const
inline
llvm::MDNode* clang::CodeGen::LValue::getTBAAInfo ( ) const
inline
uint64_t clang::CodeGen::LValue::getTBAAOffset ( ) const
inline
QualType clang::CodeGen::LValue::getType ( ) const
inline
Address clang::CodeGen::LValue::getVectorAddress ( ) const
inline
llvm::Value* clang::CodeGen::LValue::getVectorIdx ( ) const
inline
llvm::Value* clang::CodeGen::LValue::getVectorPointer ( ) const
inline

Definition at line 342 of file CGValue.h.

References isVectorElt().

Referenced by getVectorAddress().

unsigned clang::CodeGen::LValue::getVRQualifiers ( ) const
inline
ARCPreciseLifetime_t clang::CodeGen::LValue::isARCPreciseLifetime ( ) const
inline
bool clang::CodeGen::LValue::isBitField ( ) const
inline
bool clang::CodeGen::LValue::isExtVectorElt ( ) const
inline
bool clang::CodeGen::LValue::isGlobalObjCRef ( ) const
inline
bool clang::CodeGen::LValue::isGlobalReg ( ) const
inline
bool clang::CodeGen::LValue::isNonGC ( ) const
inline

Definition at line 270 of file CGValue.h.

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

bool clang::CodeGen::LValue::isNontemporal ( ) const
inline
bool clang::CodeGen::LValue::isObjCArray ( ) const
inline

Definition at line 267 of file CGValue.h.

Referenced by setObjCGCLValueClass().

bool clang::CodeGen::LValue::isObjCIvar ( ) const
inline
bool clang::CodeGen::LValue::isObjCStrong ( ) const
inline
bool clang::CodeGen::LValue::isObjCWeak ( ) const
inline
bool clang::CodeGen::LValue::isRestrictQualified ( ) const
inline

Definition at line 253 of file CGValue.h.

References clang::Qualifiers::hasRestrict().

bool clang::CodeGen::LValue::isSimple ( ) const
inline
bool clang::CodeGen::LValue::isThreadLocalRef ( ) const
inline

Definition at line 276 of file CGValue.h.

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

bool clang::CodeGen::LValue::isVectorElt ( ) const
inline
bool clang::CodeGen::LValue::isVolatile ( ) const
inline
bool clang::CodeGen::LValue::isVolatileQualified ( ) const
inline
static LValue clang::CodeGen::LValue::MakeAddr ( Address  address,
QualType  type,
ASTContext Context,
AlignmentSource  alignSource,
llvm::MDNode *  TBAAInfo = nullptr 
)
inlinestatic
static LValue clang::CodeGen::LValue::MakeBitfield ( Address  Addr,
const CGBitFieldInfo Info,
QualType  type,
AlignmentSource  alignSource 
)
inlinestatic

Create a new object to represent a bit-field access.

Parameters
Addr- The base address of the bit-field sequence this bit-field refers to.
Info- The information describing how to perform the bit-field access.

Definition at line 414 of file CGValue.h.

References BitFieldInfo, clang::CodeGen::Address::getAlignment(), clang::CodeGen::Address::getPointer(), and clang::QualType::getQualifiers().

Referenced by EmitAtomicUpdateValue(), and clang::CodeGen::CGObjCRuntime::EmitValueForIvarAtOffset().

static LValue clang::CodeGen::LValue::MakeExtVectorElt ( Address  vecAddress,
llvm::Constant *  Elts,
QualType  type,
AlignmentSource  alignSource 
)
inlinestatic
static LValue clang::CodeGen::LValue::MakeGlobalReg ( Address  Reg,
QualType  type 
)
inlinestatic
static LValue clang::CodeGen::LValue::MakeVectorElt ( Address  vecAddress,
llvm::Value Idx,
QualType  type,
AlignmentSource  alignSource 
)
inlinestatic
void clang::CodeGen::LValue::setAddress ( Address  address)
inline
void clang::CodeGen::LValue::setAlignment ( CharUnits  A)
inline

Definition at line 317 of file CGValue.h.

References clang::CharUnits::getQuantity().

void clang::CodeGen::LValue::setAlignmentSource ( AlignmentSource  Source)
inline

Definition at line 322 of file CGValue.h.

void clang::CodeGen::LValue::setARCPreciseLifetime ( ARCPreciseLifetime_t  value)
inline
void clang::CodeGen::LValue::setBaseIvarExp ( Expr V)
inline

Definition at line 300 of file CGValue.h.

Referenced by setObjCGCLValueClass().

void clang::CodeGen::LValue::setGlobalObjCRef ( bool  Value)
inline

Definition at line 274 of file CGValue.h.

Referenced by setObjCGCLValueClass().

void clang::CodeGen::LValue::setNonGC ( bool  Value)
inline
void clang::CodeGen::LValue::setNontemporal ( bool  Value)
inline

Definition at line 286 of file CGValue.h.

Referenced by EmitNontemporalLoad(), and EmitNontemporalStore().

void clang::CodeGen::LValue::setObjCArray ( bool  Value)
inline

Definition at line 268 of file CGValue.h.

Referenced by setObjCGCLValueClass().

void clang::CodeGen::LValue::setObjCIvar ( bool  Value)
inline

Definition at line 265 of file CGValue.h.

Referenced by setObjCGCLValueClass().

void clang::CodeGen::LValue::setTBAABaseType ( QualType  T)
inline

Definition at line 303 of file CGValue.h.

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

void clang::CodeGen::LValue::setTBAAInfo ( llvm::MDNode *  N)
inline
void clang::CodeGen::LValue::setTBAAOffset ( uint64_t  O)
inline

Definition at line 306 of file CGValue.h.

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

void clang::CodeGen::LValue::setThreadLocalRef ( bool  Value)
inline

Definition at line 277 of file CGValue.h.

Referenced by setObjCGCLValueClass().

Member Data Documentation

const CGBitFieldInfo* clang::CodeGen::LValue::BitFieldInfo

Definition at line 171 of file CGValue.h.

Referenced by getBitFieldInfo(), and MakeBitfield().

llvm::Constant* clang::CodeGen::LValue::VectorElts

Definition at line 168 of file CGValue.h.

Referenced by getExtVectorElts(), and MakeExtVectorElt().

llvm::Value* clang::CodeGen::LValue::VectorIdx

Definition at line 165 of file CGValue.h.

Referenced by getVectorIdx(), and MakeVectorElt().


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