clang  5.0.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 "/usr/local/google/work/llvm-www-releases/5.0.0/docsbuild/llvm.src/tools/clang/lib/CodeGen/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)
 
LValueBaseInfo getBaseInfo () const
 
void setBaseInfo (LValueBaseInfo Info)
 
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, LValueBaseInfo BaseInfo, llvm::MDNode *TBAAInfo=nullptr)
 
static LValue MakeVectorElt (Address vecAddress, llvm::Value *Idx, QualType type, LValueBaseInfo BaseInfo)
 
static LValue MakeExtVectorElt (Address vecAddress, llvm::Constant *Elts, QualType type, LValueBaseInfo BaseInfo)
 
static LValue MakeBitfield (Address Addr, const CGBitFieldInfo &Info, QualType type, LValueBaseInfo BaseInfo)
 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 171 of file CGValue.h.

Member Function Documentation

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

Definition at line 346 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::EmitCallArg(), clang::CodeGen::CodeGenFunction::EmitCastLValue(), emitCombinerOrInitializer(), clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall(), clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorMemberCallExpr(), clang::CodeGen::CodeGenFunction::EmitCXXMemberPointerCallExpr(), clang::CodeGen::CodeGenFunction::EmitCXXPseudoDestructorExpr(), emitDistributeParallelForDistributeInnerBoundParams(), clang::CodeGen::CodeGenFunction::EmitExtVectorElementExpr(), clang::CodeGen::ReductionCodeGen::emitInitialization(), 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::EmitOMPFirstprivateClause(), clang::CodeGen::CodeGenFunction::EmitOMPLastprivateClauseInit(), clang::CodeGen::CodeGenFunction::EmitOMPLinearClauseFinal(), clang::CodeGen::CodeGenFunction::EmitOMPPrivateLoopCounters(), clang::CodeGen::CodeGenFunction::EmitOMPReductionClauseInit(), clang::CodeGen::CodeGenFunction::EmitOMPWorksharingLoop(), emitOutlinedFunctionPrologue(), 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::GenerateOpenMPCapturedVars(), loadToBegin(), clang::CodeGen::CodeGenFunction::StartFunction(), tryEmitARCCopyWeakInit(), and tryEmitARCRetainLoadOfScalar().

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

Definition at line 333 of file CGValue.h.

References clang::Qualifiers::getAddressSpace().

CharUnits clang::CodeGen::LValue::getAlignment ( ) const
inline
LValueBaseInfo clang::CodeGen::LValue::getBaseInfo ( ) const
inline
Expr* clang::CodeGen::LValue::getBaseIvarExp ( ) const
inline

Definition at line 318 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 377 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 364 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 331 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

Definition at line 277 of file CGValue.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitARCStoreStrong(), clang::CodeGen::CodeGenFunction::EmitArraySubscriptExpr(), clang::CodeGen::CodeGenFunction::EmitAtomicLoad(), clang::CodeGen::CodeGenFunction::EmitAtomicStore(), EmitAtomicUpdateValue(), clang::CodeGen::CodeGenFunction::EmitDeclRefLValue(), clang::CodeGen::CodeGenFunction::EmitExtVectorElementLValue(), clang::CodeGen::ReductionCodeGen::emitInitialization(), clang::CodeGen::CodeGenFunction::EmitLoadOfBitfieldLValue(), clang::CodeGen::CodeGenFunction::EmitLoadOfExtVectorElementLValue(), clang::CodeGen::CodeGenFunction::EmitLoadOfGlobalRegLValue(), clang::CodeGen::CodeGenFunction::EmitLoadOfLValue(), clang::CodeGen::CodeGenFunction::EmitLoadOfScalar(), clang::CodeGen::CodeGenFunction::EmitLValue(), clang::CodeGen::CodeGenFunction::EmitNullabilityCheck(), emitOMPAtomicRMW(), clang::CodeGen::CodeGenFunction::EmitOMPAtomicSimpleUpdateExpr(), clang::CodeGen::CodeGenFunction::emitOMPSimpleStore(), emitOutlinedFunctionPrologue(), clang::CodeGen::CodeGenFunction::EmitScalarInit(), clang::CodeGen::CodeGenFunction::EmitStoreOfScalar(), clang::CodeGen::CodeGenFunction::EmitStoreThroughBitfieldLValue(), clang::CodeGen::CodeGenFunction::EmitStoreThroughExtVectorComponentLValue(), clang::CodeGen::CodeGenFunction::EmitStoreThroughGlobalRegLValue(), clang::CodeGen::CodeGenFunction::EmitStoreThroughLValue(), clang::CodeGen::CodeGenFunction::EmitUnaryOpLValue(), loadToBegin(), and clang::CodeGen::CodeGenFunction::LValueIsSuitableForInlineAtomic().

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 357 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 289 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 286 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 272 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 295 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,
LValueBaseInfo  BaseInfo,
llvm::MDNode *  TBAAInfo = nullptr 
)
inlinestatic
static LValue clang::CodeGen::LValue::MakeBitfield ( Address  Addr,
const CGBitFieldInfo Info,
QualType  type,
LValueBaseInfo  BaseInfo 
)
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 429 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,
LValueBaseInfo  BaseInfo 
)
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,
LValueBaseInfo  BaseInfo 
)
inlinestatic
void clang::CodeGen::LValue::setAddress ( Address  address)
inline
void clang::CodeGen::LValue::setAlignment ( CharUnits  A)
inline

Definition at line 336 of file CGValue.h.

References clang::CharUnits::getQuantity().

void clang::CodeGen::LValue::setARCPreciseLifetime ( ARCPreciseLifetime_t  value)
inline
void clang::CodeGen::LValue::setBaseInfo ( LValueBaseInfo  Info)
inline

Definition at line 339 of file CGValue.h.

void clang::CodeGen::LValue::setBaseIvarExp ( Expr V)
inline

Definition at line 319 of file CGValue.h.

Referenced by setObjCGCLValueClass().

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

Definition at line 293 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 305 of file CGValue.h.

Referenced by EmitNontemporalLoad(), and EmitNontemporalStore().

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

Definition at line 287 of file CGValue.h.

Referenced by setObjCGCLValueClass().

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

Definition at line 284 of file CGValue.h.

Referenced by setObjCGCLValueClass().

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

Definition at line 322 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 325 of file CGValue.h.

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

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

Definition at line 296 of file CGValue.h.

Referenced by setObjCGCLValueClass().

Member Data Documentation

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

Definition at line 190 of file CGValue.h.

Referenced by getBitFieldInfo(), and MakeBitfield().

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

Definition at line 187 of file CGValue.h.

Referenced by getExtVectorElts(), and MakeExtVectorElt().

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

Definition at line 184 of file CGValue.h.

Referenced by getVectorIdx(), and MakeVectorElt().


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