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

#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 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)
 
llvm::ValuegetAddress () const
 
void setAddress (llvm::Value *address)
 
llvm::ValuegetVectorAddr () const
 
llvm::ValuegetVectorIdx () const
 
llvm::ValuegetExtVectorAddr () const
 
llvm::Constant * getExtVectorElts () const
 
llvm::ValuegetBitFieldAddr () const
 
const CGBitFieldInfogetBitFieldInfo () const
 
llvm::ValuegetGlobalReg () const
 
RValue asAggregateRValue () const
 

Static Public Member Functions

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

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 109 of file CGValue.h.

Member Function Documentation

RValue clang::CodeGen::LValue::asAggregateRValue ( ) const
inline
llvm::Value* clang::CodeGen::LValue::getAddress ( ) const
inline

Definition at line 265 of file CGValue.h.

References isSimple().

Referenced by asAggregateRValue(), drillIntoBlockVariable(), EmitAggMemberInitializer(), clang::CodeGen::CodeGenFunction::EmitARCStoreStrong(), clang::CodeGen::CodeGenFunction::EmitArraySubscriptExpr(), clang::CodeGen::CodeGenFunction::EmitAtomicCompareExchange(), clang::CodeGen::CodeGenFunction::EmitAtomicStore(), clang::CodeGen::CodeGenFunction::EmitCallArg(), clang::CodeGen::CodeGenFunction::EmitCallExpr(), clang::CodeGen::CodeGenFunction::EmitCapturedStmt(), clang::CodeGen::CodeGenFunction::EmitCastLValue(), clang::CodeGen::CodeGenFunction::EmitCheckedLValue(), emitCPPObjectAtomicSetterCall(), clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall(), clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorMemberCallExpr(), clang::CodeGen::CodeGenFunction::EmitCXXMemberPointerCallExpr(), clang::CodeGen::CodeGenFunction::EmitExtVectorElementExpr(), clang::CodeGen::CodeGenFunction::EmitInitializerForField(), emitLinearClauseFinal(), clang::CodeGen::CodeGenFunction::EmitLoadOfLValue(), clang::CodeGen::CodeGenFunction::EmitLoadOfScalar(), clang::CodeGen::CodeGenFunction::EmitLValueForField(), clang::CodeGen::CodeGenFunction::EmitLValueForFieldInitialization(), EmitMemberInitializer(), clang::CodeGen::CodeGenFunction::EmitObjCIsaExpr(), clang::CodeGen::CodeGenFunction::EmitObjCIvarRefLValue(), emitOMPAtomicRMW(), clang::CodeGen::CodeGenFunction::EmitOMPCopyinClause(), clang::CodeGen::CodeGenFunction::EmitOMPFirstprivateClause(), clang::CodeGen::CodeGenFunction::EmitOMPLastprivateClauseInit(), clang::CodeGen::CodeGenFunction::EmitOMPReductionClauseInit(), clang::CodeGen::CodeGenFunction::EmitParmDecl(), clang::CodeGen::CodeGenFunction::EmitReferenceBindingToExpr(), clang::CodeGen::CodeGenFunction::EmitScalarInit(), clang::CodeGen::CodeGenFunction::EmitStoreOfScalar(), clang::CodeGen::CodeGenFunction::EmitStoreThroughLValue(), emitStructSetterCall(), 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::generateObjCSetterBody(), and tryEmitARCRetainLoadOfScalar().

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

Definition at line 259 of file CGValue.h.

References clang::Qualifiers::getAddressSpace().

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

Definition at line 244 of file CGValue.h.

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

llvm::Value* clang::CodeGen::LValue::getBitFieldAddr ( ) const
inline
const CGBitFieldInfo& clang::CodeGen::LValue::getBitFieldInfo ( ) const
inline
llvm::Value* clang::CodeGen::LValue::getExtVectorAddr ( ) const
inline
llvm::Constant* clang::CodeGen::LValue::getExtVectorElts ( ) const
inline
llvm::Value* clang::CodeGen::LValue::getGlobalReg ( ) const
inline
Qualifiers::ObjCLifetime clang::CodeGen::LValue::getObjCLifetime ( ) const
inline
const Qualifiers& clang::CodeGen::LValue::getQuals ( ) const
inline
Qualifiers& clang::CodeGen::LValue::getQuals ( )
inline

Definition at line 257 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
llvm::Value* clang::CodeGen::LValue::getVectorAddr ( ) const
inline
llvm::Value* clang::CodeGen::LValue::getVectorIdx ( ) const
inline
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 217 of file CGValue.h.

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

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

Definition at line 214 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 200 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 223 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 ( llvm::Value address,
QualType  type,
CharUnits  alignment,
ASTContext Context,
llvm::MDNode *  TBAAInfo = nullptr 
)
inlinestatic
static LValue clang::CodeGen::LValue::MakeBitfield ( llvm::Value Addr,
const CGBitFieldInfo Info,
QualType  type,
CharUnits  Alignment 
)
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 335 of file CGValue.h.

References BitFieldInfo, and clang::QualType::getQualifiers().

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

static LValue clang::CodeGen::LValue::MakeExtVectorElt ( llvm::Value Vec,
llvm::Constant *  Elts,
QualType  type,
CharUnits  Alignment 
)
inlinestatic

Definition at line 319 of file CGValue.h.

References clang::QualType::getQualifiers(), and VectorElts.

Referenced by EmitAtomicUpdateValue().

static LValue clang::CodeGen::LValue::MakeGlobalReg ( llvm::Value Reg,
QualType  type,
CharUnits  Alignment 
)
inlinestatic

Definition at line 346 of file CGValue.h.

References clang::QualType::getQualifiers().

static LValue clang::CodeGen::LValue::MakeVectorElt ( llvm::Value Vec,
llvm::Value Idx,
QualType  type,
CharUnits  Alignment 
)
inlinestatic

Definition at line 309 of file CGValue.h.

References clang::QualType::getQualifiers(), and VectorIdx.

Referenced by EmitAtomicUpdateValue().

void clang::CodeGen::LValue::setAddress ( llvm::Value address)
inline
void clang::CodeGen::LValue::setAlignment ( CharUnits  A)
inline

Definition at line 262 of file CGValue.h.

References clang::CharUnits::getQuantity().

Referenced by EmitAggMemberInitializer().

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

Definition at line 245 of file CGValue.h.

Referenced by setObjCGCLValueClass().

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

Definition at line 221 of file CGValue.h.

Referenced by setObjCGCLValueClass().

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

Definition at line 215 of file CGValue.h.

Referenced by setObjCGCLValueClass().

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

Definition at line 212 of file CGValue.h.

Referenced by setObjCGCLValueClass().

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

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

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

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

Definition at line 224 of file CGValue.h.

Referenced by setObjCGCLValueClass().

Member Data Documentation

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

Definition at line 128 of file CGValue.h.

Referenced by getBitFieldInfo(), and MakeBitfield().

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

Definition at line 125 of file CGValue.h.

Referenced by getExtVectorElts(), and MakeExtVectorElt().

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

Definition at line 122 of file CGValue.h.

Referenced by getVectorIdx(), and MakeVectorElt().


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