clang 8.0.0

Classes | Public Types | Public Member Functions | List of all members
clang::APValue Class Reference

APValue - This class implements a discriminated union of [uninitialized] [APSInt] [APFloat], [Complex APSInt] [Complex APFloat], [Expr + Offset], [Vector: N * APValue], [Array: N * APValue]. More...

`#include "clang/AST/APValue.h"`

## Classes
struct | LV
class | LValueBase
union | LValuePathEntry
struct | MemberPointerData
struct | NoLValuePath
struct | UninitArray
struct | UninitStruct

## Public Types
enum | ValueKind { Uninitialized, Int, Float, ComplexInt, ComplexFloat, LValue, Vector, Array, Struct, Union, MemberPointer, AddrLabelDiff }
typedef llvm::PointerIntPair< const Decl *, 1, bool > | BaseOrMemberType

## Public Member Functions
| APValue ()
| APValue (APSInt I)
| APValue (APFloat F)
| APValue (const APValue *E, unsigned N)
| APValue (APSInt R, APSInt I)
| APValue (APFloat R, APFloat I)
| APValue (const APValue &RHS)
| APValue (APValue &&RHS)
| APValue (LValueBase B, const CharUnits &O, NoLValuePath N, bool IsNullPtr=false)
| APValue (LValueBase B, const CharUnits &O, ArrayRef< LValuePathEntry > Path, bool OnePastTheEnd, bool IsNullPtr=false)
| APValue (UninitArray, unsigned InitElts, unsigned Size)
| APValue (UninitStruct, unsigned B, unsigned M)
| APValue (const FieldDecl *D, const APValue &V=APValue())
| APValue (const ValueDecl *Member, bool IsDerivedMember, ArrayRef< const CXXRecordDecl *> Path)
| APValue (const AddrLabelExpr *LHSExpr, const AddrLabelExpr *RHSExpr)
| ~APValue ()
bool | needsCleanup () const
| Returns whether the object performed allocations. More...
void | swap (APValue &RHS)
| Swaps the contents of this and the given APValue. More...
ValueKind | getKind () const
bool | isUninit () const
bool | isInt () const
bool | isFloat () const
bool | isComplexInt () const
bool | isComplexFloat () const
bool | isLValue () const
bool | isVector () const
bool | isArray () const
bool | isStruct () const
bool | isUnion () const
bool | isMemberPointer () const
bool | isAddrLabelDiff () const
void | dump () const
void | dump (raw_ostream &OS) const
void | printPretty (raw_ostream &OS, ASTContext &Ctx, QualType Ty) const
std::string | getAsString (ASTContext &Ctx, QualType Ty) const
APSInt & | getInt ()
const APSInt & | getInt () const
APFloat & | getFloat ()
const APFloat & | getFloat () const
APSInt & | getComplexIntReal ()
const APSInt & | getComplexIntReal () const
APSInt & | getComplexIntImag ()
const APSInt & | getComplexIntImag () const
APFloat & | getComplexFloatReal ()
const APFloat & | getComplexFloatReal () const
APFloat & | getComplexFloatImag ()
const APFloat & | getComplexFloatImag () const
const LValueBase | getLValueBase () const
CharUnits & | getLValueOffset ()
const CharUnits & | getLValueOffset () const
bool | isLValueOnePastTheEnd () const
bool | hasLValuePath () const
ArrayRef< LValuePathEntry > | getLValuePath () const
unsigned | getLValueCallIndex () const
unsigned | getLValueVersion () const
bool | isNullPointer () const
APValue & | getVectorElt (unsigned I)
const APValue & | getVectorElt (unsigned I) const
unsigned | getVectorLength () const
APValue & | getArrayInitializedElt (unsigned I)
const APValue & | getArrayInitializedElt (unsigned I) const
bool | hasArrayFiller () const
APValue & | getArrayFiller ()
const APValue & | getArrayFiller () const
unsigned | getArrayInitializedElts () const
unsigned | getArraySize () const
unsigned | getStructNumBases () const
unsigned | getStructNumFields () const
APValue & | getStructBase (unsigned i)
APValue & | getStructField (unsigned i)
const APValue & | getStructBase (unsigned i) const
const APValue & | getStructField (unsigned i) const
const FieldDecl * | getUnionField () const
APValue & | getUnionValue ()
const APValue & | getUnionValue () const
const ValueDecl * | getMemberPointerDecl () const
bool | isMemberPointerToDerivedMember () const
ArrayRef< const CXXRecordDecl * > | getMemberPointerPath () const
const AddrLabelExpr * | getAddrLabelDiffLHS () const
const AddrLabelExpr * | getAddrLabelDiffRHS () const
void | setInt (APSInt I)
void | setFloat (APFloat F)
void | setVector (const APValue *E, unsigned N)
void | setComplexInt (APSInt R, APSInt I)
void | setComplexFloat (APFloat R, APFloat I)
void | setLValue (LValueBase B, const CharUnits &O, NoLValuePath, bool IsNullPtr)
void | setLValue (LValueBase B, const CharUnits &O, ArrayRef< LValuePathEntry > Path, bool OnePastTheEnd, bool IsNullPtr)
void | setUnion (const FieldDecl *Field, const APValue &Value)
void | setAddrLabelDiff (const AddrLabelExpr *LHSExpr, const AddrLabelExpr *RHSExpr)
APValue & | operator= (APValue RHS)
| Assign by swapping from a copy of the RHS. More...

## Detailed Description

APValue - This class implements a discriminated union of [uninitialized] [APSInt] [APFloat], [Complex APSInt] [Complex APFloat], [Expr + Offset], [Vector: N * APValue], [Array: N * APValue].

Definition at line 38 of file APValue.h.

## Member Typedef Documentation

## ◆ BaseOrMemberType

typedef llvm::PointerIntPair<const Decl *, 1, bool> clang::APValue::BaseOrMemberType

Definition at line 108 of file APValue.h.

## Member Enumeration Documentation

## ◆ ValueKind

enum clang::APValue::ValueKind

Enumerator
Uninitialized |
Int |
Float |
ComplexInt |
ComplexFloat |
LValue |
Vector |
Array |
Struct |
Union |
MemberPointer |
AddrLabelDiff |

Definition at line 42 of file APValue.h.

## Constructor & Destructor Documentation

## ◆ APValue() [1/15]

clang::APValue::APValue | ( |  | ) |
| inline

Definition at line 171 of file APValue.h.

Referenced by APValue().

## ◆ APValue() [2/15]

clang::APValue::APValue | ( | APSInt | I | ) |
| inline explicit

Definition at line 172 of file APValue.h.

References setInt().

## ◆ APValue() [3/15]

clang::APValue::APValue | ( | APFloat | F | ) |
| inline explicit

Definition at line 175 of file APValue.h.

References setFloat().

## ◆ APValue() [4/15]

clang::APValue::APValue | ( | const APValue * | E,
|  | unsigned | N
| ) |  |
| inline explicit

Definition at line 178 of file APValue.h.

References setVector().

## ◆ APValue() [5/15]

clang::APValue::APValue | ( | APSInt | R,
|  | APSInt | I
| ) |  |
| inline

Definition at line 181 of file APValue.h.

References setComplexInt().

## ◆ APValue() [6/15]

clang::APValue::APValue | ( | APFloat | R,
|  | APFloat | I
| ) |  |
| inline

Definition at line 184 of file APValue.h.

References APValue(), and setComplexFloat().

## ◆ APValue() [7/15]

APValue::APValue | ( | const APValue & | RHS | ) |

Definition at line 167 of file APValue.cpp.

References AddrLabelDiff, Array, ComplexFloat, ComplexInt, Float, getAddrLabelDiffLHS(), getAddrLabelDiffRHS(), getArrayFiller(), getArrayInitializedElt(), getArrayInitializedElts(), getArraySize(), getComplexFloatImag(), getComplexFloatReal(), getComplexIntImag(), getComplexIntReal(), getFloat(), getInt(), getKind(), getLValueBase(), getLValueOffset(), getLValuePath(), getMemberPointerDecl(), getMemberPointerPath(), getStructBase(), getStructField(), getStructNumBases(), getStructNumFields(), getUnionField(), getUnionValue(), getVectorLength(), hasArrayFiller(), hasLValuePath(), Int, isLValueOnePastTheEnd(), isMemberPointerToDerivedMember(), isNullPointer(), LValue, MemberPointer, setAddrLabelDiff(), setComplexFloat(), setComplexInt(), setFloat(), setInt(), setLValue(), setUnion(), setVector(), Struct, Uninitialized, Union, and Vector.

## ◆ APValue() [8/15]

clang::APValue::APValue | ( | APValue && | RHS | ) |
| inline

Definition at line 188 of file APValue.h.

References swap().

## ◆ APValue() [9/15]

clang::APValue::APValue | ( | LValueBase | B,
|  | const CharUnits & | O,
|  | NoLValuePath | N,
|  | bool | IsNullPtr = `false`
| ) |  |
| inline

Definition at line 189 of file APValue.h.

References setLValue().

## ◆ APValue() [10/15]

clang::APValue::APValue | ( | LValueBase | B,
|  | const CharUnits & | O,
|  | ArrayRef< LValuePathEntry > | Path,
|  | bool | OnePastTheEnd,
|  | bool | IsNullPtr = `false`
| ) |  |
| inline

Definition at line 194 of file APValue.h.

References setLValue().

## ◆ APValue() [11/15]

clang::APValue::APValue | ( | UninitArray | ,
|  | unsigned | InitElts,
|  | unsigned | Size
| ) |  |
| inline

Definition at line 199 of file APValue.h.

## ◆ APValue() [12/15]

clang::APValue::APValue | ( | UninitStruct | ,
|  | unsigned | B,
|  | unsigned | M
| ) |  |
| inline

Definition at line 202 of file APValue.h.

## ◆ APValue() [13/15]

clang::APValue::APValue | ( | const FieldDecl * | D,
|  | const APValue & | V = `APValue()`
| ) |  |
| inline explicit

Definition at line 205 of file APValue.h.

References setUnion().

## ◆ APValue() [14/15]

clang::APValue::APValue | ( | const ValueDecl * | Member,
|  | bool | IsDerivedMember,
|  | ArrayRef< const CXXRecordDecl *> | Path
| ) |  |
| inline

Definition at line 209 of file APValue.h.

## ◆ APValue() [15/15]

clang::APValue::APValue | ( | const AddrLabelExpr * | LHSExpr,
|  | const AddrLabelExpr * | RHSExpr
| ) |  |
| inline

Definition at line 213 of file APValue.h.

References setAddrLabelDiff().

## ◆ ~APValue()

clang::APValue::~APValue | ( |  | ) |
| inline

Definition at line 218 of file APValue.h.

References needsCleanup(), and swap().

## Member Function Documentation

## ◆ dump() [1/2]

LLVM_DUMP_METHOD void APValue::dump | ( |  | ) | const

Definition at line 300 of file APValue.cpp.

Referenced by dump(), and isAddrLabelDiff().

## ◆ dump() [2/2]

void APValue::dump | ( | raw_ostream & | OS | ) | const

Definition at line 313 of file APValue.cpp.

References AddrLabelDiff, Array, ComplexFloat, ComplexInt, dump(), Float, GetApproxValue(), getArrayFiller(), getArrayInitializedElt(), getArrayInitializedElts(), getArraySize(), getComplexFloatImag(), getComplexFloatReal(), getComplexIntImag(), getComplexIntReal(), getFloat(), getInt(), getKind(), getStructBase(), getStructField(), getStructNumBases(), getStructNumFields(), getUnionValue(), getVectorElt(), getVectorLength(), hasArrayFiller(), Int, LValue, MemberPointer, Struct, Uninitialized, Union, and Vector.

## ◆ getAddrLabelDiffLHS()

const AddrLabelExpr* clang::APValue::getAddrLabelDiffLHS | ( |  | ) | const
| inline

Definition at line 392 of file APValue.h.

References isAddrLabelDiff().

Referenced by APValue(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ getAddrLabelDiffRHS()

const AddrLabelExpr* clang::APValue::getAddrLabelDiffRHS | ( |  | ) | const
| inline

Definition at line 396 of file APValue.h.

References isAddrLabelDiff().

Referenced by APValue(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ getArrayFiller() [1/2]

APValue& clang::APValue::getArrayFiller | ( |  | ) |
| inline

Definition at line 336 of file APValue.h.

References getArrayInitializedElts(), hasArrayFiller(), and isArray().

Referenced by APValue(), CheckConstantExpression(), dump(), EvaluateVector(), getArrayFiller(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ getArrayFiller() [2/2]

const APValue& clang::APValue::getArrayFiller | ( |  | ) | const
| inline

Definition at line 341 of file APValue.h.

References getArrayFiller().

## ◆ getArrayInitializedElt() [1/2]

APValue& clang::APValue::getArrayInitializedElt | ( | unsigned | I | ) |
| inline

Definition at line 325 of file APValue.h.

References getArrayInitializedElts(), and isArray().

Referenced by APValue(), CheckConstantExpression(), dump(), getArrayInitializedElt(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ getArrayInitializedElt() [2/2]

const APValue& clang::APValue::getArrayInitializedElt | ( | unsigned | I | ) | const
| inline

Definition at line 330 of file APValue.h.

References getArrayInitializedElt().

## ◆ getArrayInitializedElts()

unsigned clang::APValue::getArrayInitializedElts | ( |  | ) | const
| inline

Definition at line 344 of file APValue.h.

References isArray().

Referenced by APValue(), CheckConstantExpression(), dump(), getArrayFiller(), getArrayInitializedElt(), hasArrayFiller(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ getArraySize()

unsigned clang::APValue::getArraySize | ( |  | ) | const
| inline

Definition at line 348 of file APValue.h.

References isArray().

Referenced by APValue(), dump(), hasArrayFiller(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ getAsString()

std::string APValue::getAsString | ( | ASTContext & | Ctx,
|  | QualType | Ty
| ) |  | const

Definition at line 595 of file APValue.cpp.

References printPretty(), and clang::Result.

Referenced by CheckConvertedConstantExpression(), DiagnoseNarrowingInInitList(), GetAlignOfExpr(), and isAddrLabelDiff().

## ◆ getComplexFloatImag() [1/2]

APFloat& clang::APValue::getComplexFloatImag | ( |  | ) |
| inline

Definition at line 292 of file APValue.h.

References isComplexFloat().

Referenced by APValue(), dump(), getComplexFloatImag(), HandleConversionToBool(), IsSameFloatAfterCast(), needsCleanup(), printPretty(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ getComplexFloatImag() [2/2]

const APFloat& clang::APValue::getComplexFloatImag | ( |  | ) | const
| inline

Definition at line 296 of file APValue.h.

References getComplexFloatImag(), getLValueBase(), and getLValueOffset().

## ◆ getComplexFloatReal() [1/2]

APFloat& clang::APValue::getComplexFloatReal | ( |  | ) |
| inline

Definition at line 284 of file APValue.h.

References isComplexFloat().

Referenced by APValue(), dump(), getComplexFloatReal(), handleCompoundAssignment(), HandleConversionToBool(), IsSameFloatAfterCast(), needsCleanup(), printPretty(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ getComplexFloatReal() [2/2]

const APFloat& clang::APValue::getComplexFloatReal | ( |  | ) | const
| inline

Definition at line 288 of file APValue.h.

References getComplexFloatReal().

## ◆ getComplexIntImag() [1/2]

APSInt& clang::APValue::getComplexIntImag | ( |  | ) |
| inline

Definition at line 276 of file APValue.h.

References isComplexInt().

Referenced by APValue(), dump(), getComplexIntImag(), GetValueRange(), HandleConversionToBool(), needsCleanup(), printPretty(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ getComplexIntImag() [2/2]

const APSInt& clang::APValue::getComplexIntImag | ( |  | ) | const
| inline

Definition at line 280 of file APValue.h.

References getComplexIntImag().

## ◆ getComplexIntReal() [1/2]

APSInt& clang::APValue::getComplexIntReal | ( |  | ) |
| inline

Definition at line 268 of file APValue.h.

References isComplexInt().

Referenced by APValue(), dump(), getComplexIntReal(), GetValueRange(), handleCompoundAssignment(), HandleConversionToBool(), needsCleanup(), printPretty(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ getComplexIntReal() [2/2]

const APSInt& clang::APValue::getComplexIntReal | ( |  | ) | const
| inline

Definition at line 272 of file APValue.h.

References getComplexIntReal().

## ◆ getFloat() [1/2]

APFloat& clang::APValue::getFloat | ( |  | ) |
| inline

Definition at line 260 of file APValue.h.

References isFloat().

Referenced by APValue(), dump(), clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(), EvalAndBitcastToAPInt(), extractSubobject(), getFloat(), clang::StandardConversionSequence::getNarrowingKind(), handleAssignment(), handleCompoundAssignment(), HandleConversionToBool(), IsSameFloatAfterCast(), needsCleanup(), printPretty(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ getFloat() [2/2]

const APFloat& clang::APValue::getFloat | ( |  | ) | const
| inline

Definition at line 264 of file APValue.h.

References getFloat().

## ◆ getInt() [1/2]

APSInt& clang::APValue::getInt | ( |  | ) |
| inline

Definition at line 252 of file APValue.h.

References isInt().

Referenced by AddVariableConstraints(), AnalyzeBitFieldAssignment(), APValue(), canConvertIntToOtherIntTy(), canConvertIntTyToFloatTy(), checkArrayExpressionDoesNotReferToUnitySize(), checkArrayExpressionDoesNotReferToWholeSize(), checkFormatStringExpr(), CheckImplicitConversion(), checkMapClauseExpressionBase(), checkOpenMPLoop(), checkSimdlenSafelenSpecified(), clang::CodeGen::CodeGenFunction::ConstantFoldsToSimpleInteger(), DiagnoseBadDivideOrRemainderValues(), DiagnoseBadFunctionCast(), DiagnoseBadShiftValues(), dump(), clang::CodeGen::CodeGenFunction::EmitARMBuiltinExpr(), clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(), clang::CodeGen::emitDeclareSimdFunction(), EvalAndBitcastToAPInt(), EvaluateComparisonBinaryOperator(), EvaluateCPlusPlus11IntegralConstantExpr(), EvaluateInteger(), EvaluatePointer(), extractSubobject(), GetAlignOfExpr(), getBytesReturnedByAllocSizeCall(), clang::ento::SValBuilder::getConstantVal(), getInt(), clang::ComparisonCategoryInfo::ValueInfo::getIntValue(), GetValueRange(), handleAssignment(), handleCompoundAssignment(), HandleConversionToBool(), hasDefaultSetterName(), isInLoop(), needsCleanup(), printPretty(), shouldAddCase(), truncateBitfieldValue(), clang::CodeGen::ConstantEmitter::tryEmitPrivate(), and tryEvaluateBuiltinObjectSize().

## ◆ getInt() [2/2]

const APSInt& clang::APValue::getInt | ( |  | ) | const
| inline

Definition at line 256 of file APValue.h.

References getInt().

## ◆ getKind()

ValueKind clang::APValue::getKind | ( |  | ) | const
| inline

Definition at line 232 of file APValue.h.

Referenced by APValue(), dump(), EvaluateBuiltinConstantP(), handleAssignment(), handleCompoundAssignment(), HandleConversionToBool(), needsCleanup(), printPretty(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ getLValueBase()

const APValue::LValueBase APValue::getLValueBase | ( |  | ) | const

Definition at line 603 of file APValue.cpp.

References isLValue().

Referenced by APValue(), EvalPointerValueAsBool(), getComplexFloatImag(), isNullPointerValueTemplateArgument(), and printPretty().

## ◆ getLValueCallIndex()

unsigned APValue::getLValueCallIndex | ( |  | ) | const

Definition at line 629 of file APValue.cpp.

References isLValue().

Referenced by getLValueOffset().

## ◆ getLValueOffset() [1/2]

CharUnits & APValue::getLValueOffset | ( |  | ) |

Definition at line 613 of file APValue.cpp.

References isLValue().

Referenced by APValue(), EvalPointerValueAsBool(), getComplexFloatImag(), getLValueOffset(), and printPretty().

## ◆ getLValueOffset() [2/2]

const CharUnits& clang::APValue::getLValueOffset | ( |  | ) | const
| inline

Definition at line 302 of file APValue.h.

References getLValueCallIndex(), getLValueOffset(), getLValuePath(), getLValueVersion(), hasLValuePath(), isLValueOnePastTheEnd(), and isNullPointer().

## ◆ getLValuePath()

ArrayRef< APValue::LValuePathEntry > APValue::getLValuePath | ( |  | ) | const

Definition at line 623 of file APValue.cpp.

References clang::APValue::LV::getPath(), hasLValuePath(), and isLValue().

Referenced by APValue(), and getLValueOffset().

## ◆ getLValueVersion()

unsigned APValue::getLValueVersion | ( |  | ) | const

Definition at line 634 of file APValue.cpp.

References isLValue().

Referenced by getLValueOffset().

## ◆ getMemberPointerDecl()

const ValueDecl * APValue::getMemberPointerDecl | ( |  | ) | const

Definition at line 668 of file APValue.cpp.

References isMemberPointer().

Referenced by APValue(), CheckMemberPointerConstantExpression(), clang::CodeGen::CGCXXABI::getMemberPointerPathAdjustment(), getUnionValue(), HandleConversionToBool(), and isNullPointerValueTemplateArgument().

## ◆ getMemberPointerPath()

ArrayRef< const CXXRecordDecl * > APValue::getMemberPointerPath | ( |  | ) | const

Definition at line 682 of file APValue.cpp.

References Array, clang::APValue::MemberPointerData::getPath(), isMemberPointer(), isUninit(), LValue, MemberPointer, memcpy(), and clang::APValue::MemberPointerData::resizePath().

Referenced by APValue(), clang::CodeGen::CGCXXABI::getMemberPointerPathAdjustment(), and getUnionValue().

## ◆ getStructBase() [1/2]

APValue& clang::APValue::getStructBase | ( | unsigned | i | ) |
| inline

Definition at line 361 of file APValue.h.

References isStruct().

Referenced by APValue(), CheckConstantExpression(), dump(), getStructBase(), and HandleConstructorCall().

## ◆ getStructBase() [2/2]

const APValue& clang::APValue::getStructBase | ( | unsigned | i | ) | const
| inline

Definition at line 369 of file APValue.h.

References getStructBase().

## ◆ getStructField() [1/2]

APValue& clang::APValue::getStructField | ( | unsigned | i | ) |
| inline

Definition at line 365 of file APValue.h.

References getStructNumBases(), and isStruct().

Referenced by APValue(), CheckConstantExpression(), dump(), clang::ComparisonCategoryInfo::ValueInfo::getIntValue(), getStructField(), and HandleConstructorCall().

## ◆ getStructField() [2/2]

const APValue& clang::APValue::getStructField | ( | unsigned | i | ) | const
| inline

Definition at line 372 of file APValue.h.

References getStructField().

## ◆ getStructNumBases()

unsigned clang::APValue::getStructNumBases | ( |  | ) | const
| inline

Definition at line 353 of file APValue.h.

References isStruct().

Referenced by APValue(), dump(), and getStructField().

## ◆ getStructNumFields()

unsigned clang::APValue::getStructNumFields | ( |  | ) | const
| inline

Definition at line 357 of file APValue.h.

References isStruct().

Referenced by APValue(), and dump().

## ◆ getUnionField()

const FieldDecl* clang::APValue::getUnionField | ( |  | ) | const
| inline

Definition at line 376 of file APValue.h.

References isUnion().

Referenced by APValue(), CheckConstantExpression(), and HandleConstructorCall().

## ◆ getUnionValue() [1/2]

APValue& clang::APValue::getUnionValue | ( |  | ) |
| inline

Definition at line 380 of file APValue.h.

References isUnion().

Referenced by APValue(), CheckConstantExpression(), dump(), getUnionValue(), and HandleConstructorCall().

## ◆ getUnionValue() [2/2]

const APValue& clang::APValue::getUnionValue | ( |  | ) | const
| inline

Definition at line 384 of file APValue.h.

References getMemberPointerDecl(), getMemberPointerPath(), getUnionValue(), and isMemberPointerToDerivedMember().

## ◆ getVectorElt() [1/2]

APValue& clang::APValue::getVectorElt | ( | unsigned | I | ) |
| inline

Definition at line 312 of file APValue.h.

References getVectorLength(), and isVector().

Referenced by dump(), EvalAndBitcastToAPInt(), EvaluateVector(), GetValueRange(), getVectorElt(), IsSameFloatAfterCast(), printPretty(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ getVectorElt() [2/2]

const APValue& clang::APValue::getVectorElt | ( | unsigned | I | ) | const
| inline

Definition at line 317 of file APValue.h.

References getVectorElt().

## ◆ getVectorLength()

unsigned clang::APValue::getVectorLength | ( |  | ) | const
| inline

Definition at line 320 of file APValue.h.

References isVector().

Referenced by APValue(), dump(), EvalAndBitcastToAPInt(), EvaluateVector(), GetValueRange(), getVectorElt(), IsSameFloatAfterCast(), printPretty(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ hasArrayFiller()

bool clang::APValue::hasArrayFiller | ( |  | ) | const
| inline

Definition at line 333 of file APValue.h.

References getArrayInitializedElts(), and getArraySize().

Referenced by APValue(), CheckConstantExpression(), dump(), EvaluateVector(), getArrayFiller(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ hasLValuePath()

bool APValue::hasLValuePath | ( |  | ) | const

Definition at line 618 of file APValue.cpp.

References isLValue().

Referenced by APValue(), getLValueOffset(), getLValuePath(), and printPretty().

## ◆ isAddrLabelDiff()

bool clang::APValue::isAddrLabelDiff | ( |  | ) | const
| inline

Definition at line 244 of file APValue.h.

References AddrLabelDiff, dump(), getAsString(), and printPretty().

Referenced by getAddrLabelDiffLHS(), getAddrLabelDiffRHS(), and GetValueRange().

## ◆ isArray()

bool clang::APValue::isArray | ( |  | ) | const
| inline

Definition at line 240 of file APValue.h.

References Array.

Referenced by CheckConstantExpression(), EvaluateVector(), getArrayFiller(), getArrayInitializedElt(), getArrayInitializedElts(), and getArraySize().

## ◆ isComplexFloat()

bool clang::APValue::isComplexFloat | ( |  | ) | const
| inline

Definition at line 237 of file APValue.h.

References ComplexFloat.

Referenced by getComplexFloatImag(), getComplexFloatReal(), IsSameFloatAfterCast(), and setComplexFloat().

## ◆ isComplexInt()

bool clang::APValue::isComplexInt | ( |  | ) | const
| inline

Definition at line 236 of file APValue.h.

References ComplexInt.

Referenced by getComplexIntImag(), getComplexIntReal(), GetValueRange(), and setComplexInt().

## ◆ isFloat()

bool clang::APValue::isFloat | ( |  | ) | const
| inline

Definition at line 235 of file APValue.h.

References Float.

Referenced by clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(), EvalAndBitcastToAPInt(), getFloat(), clang::StandardConversionSequence::getNarrowingKind(), handleAssignment(), IsSameFloatAfterCast(), setFloat(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().

## ◆ isInt()

bool clang::APValue::isInt | ( |  | ) | const
| inline

Definition at line 234 of file APValue.h.

References Int.

Referenced by CheckConvertedConstantExpression(), clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(), EvalAndBitcastToAPInt(), EvaluateAsInt(), EvaluateCPlusPlus11IntegralConstantExpr(), EvaluateInteger(), EvaluatePointer(), extractSubobject(), GetAlignOfExpr(), getInt(), GetValueRange(), handleAssignment(), setInt(), shouldAddCase(), truncateBitfieldValue(), clang::CodeGen::ConstantEmitter::tryEmitPrivate(), and tryEvaluateBuiltinObjectSize().

## ◆ isLValue()

bool clang::APValue::isLValue | ( |  | ) | const
| inline

Definition at line 238 of file APValue.h.

References LValue.

Referenced by CheckConstantExpression(), EvaluateVector(), getLValueBase(), getLValueCallIndex(), getLValueOffset(), getLValuePath(), getLValueVersion(), GetValueRange(), hasLValuePath(), isLValueOnePastTheEnd(), isNullPointer(), isNullPointerValueTemplateArgument(), setLValue(), and truncateBitfieldValue().

## ◆ isLValueOnePastTheEnd()

bool APValue::isLValueOnePastTheEnd | ( |  | ) | const

Definition at line 608 of file APValue.cpp.

References isLValue().

Referenced by APValue(), and getLValueOffset().

## ◆ isMemberPointer()

bool clang::APValue::isMemberPointer | ( |  | ) | const
| inline

Definition at line 243 of file APValue.h.

References MemberPointer.

Referenced by CheckConstantExpression(), getMemberPointerDecl(), getMemberPointerPath(), isMemberPointerToDerivedMember(), and isNullPointerValueTemplateArgument().

## ◆ isMemberPointerToDerivedMember()

bool APValue::isMemberPointerToDerivedMember | ( |  | ) | const

Definition at line 675 of file APValue.cpp.

References isMemberPointer().

Referenced by APValue(), clang::CodeGen::CGCXXABI::getMemberPointerPathAdjustment(), and getUnionValue().

## ◆ isNullPointer()

bool APValue::isNullPointer | ( |  | ) | const

Definition at line 639 of file APValue.cpp.

References isLValue().

Referenced by APValue(), getLValueOffset(), printPretty(), and clang::CodeGen::CodeGenFunction::ShouldNullCheckClassCastValue().

## ◆ isStruct()

bool clang::APValue::isStruct | ( |  | ) | const
| inline

Definition at line 241 of file APValue.h.

References Struct.

Referenced by CheckConstantExpression(), getStructBase(), getStructField(), getStructNumBases(), and getStructNumFields().

## ◆ isUninit()

bool clang::APValue::isUninit | ( |  | ) | const
| inline

Definition at line 233 of file APValue.h.

References Uninitialized.

Referenced by CheckConstantExpression(), clang::CodeGen::CodeGenFunction::EmitDeclRefExprDbgValue(), EvaluateLValue(), clang::VarDecl::evaluateValue(), findSubobject(), getMemberPointerPath(), HandleConstructorCall(), MaybeElementDependentArrayFiller(), and operator=().

## ◆ isUnion()

bool clang::APValue::isUnion | ( |  | ) | const
| inline

Definition at line 242 of file APValue.h.

References Union.

Referenced by CheckConstantExpression(), getUnionField(), getUnionValue(), HandleConstructorCall(), and setUnion().

## ◆ isVector()

bool clang::APValue::isVector | ( |  | ) | const
| inline

Definition at line 239 of file APValue.h.

References Vector.

Referenced by EvalAndBitcastToAPInt(), EvaluateTemporary(), GetValueRange(), getVectorElt(), getVectorLength(), IsSameFloatAfterCast(), and setVector().

## ◆ needsCleanup()

bool APValue::needsCleanup | ( |  | ) | const

Returns whether the object performed allocations.

If APValues are constructed via placement new, `needsCleanup()` indicates whether the destructor must be called in order to correctly free all allocated memory.

Definition at line 257 of file APValue.cpp.

References AddrLabelDiff, Array, ComplexFloat, ComplexInt, Float, getComplexFloatImag(), getComplexFloatReal(), getComplexIntImag(), getComplexIntReal(), getFloat(), getInt(), getKind(), Int, LValue, MemberPointer, Struct, Uninitialized, Union, and Vector.

Referenced by clang::VarDecl::evaluateValue(), and ~APValue().

## ◆ operator=()

APValue& clang::APValue::operator= | ( | APValue | RHS | ) |
| inline

Assign by swapping from a copy of the RHS.

Definition at line 447 of file APValue.h.

References AddrLabelDiff, ComplexFloat, ComplexInt, Float, Int, isUninit(), Struct, swap(), Uninitialized, Union, and Vector.

## ◆ printPretty()

void APValue::printPretty | ( | raw_ostream & | OS,
|  | ASTContext & | Ctx,
|  | QualType | Ty
| ) |  | const

Definition at line 386 of file APValue.cpp.

References ComplexFloat, ComplexInt, Float, GetApproxValue(), clang::Type::getAs(), getComplexFloatImag(), getComplexFloatReal(), getComplexIntImag(), getComplexIntReal(), getFloat(), getInt(), getKind(), clang::ASTContext::getLangOpts(), getLValueBase(), getLValueOffset(), clang::QualType::getNonReferenceType(), clang::Type::getPointeeType(), clang::ASTContext::getPrintingPolicy(), clang::CharUnits::getQuantity(), getVectorElt(), getVectorLength(), hasLValuePath(), Int, clang::Type::isBooleanType(), clang::QualType::isNull(), isNullPointer(), clang::Type::isReferenceType(), LValue, printPretty(), clang::QualType::stream(), Uninitialized, and Vector.

Referenced by describeCall(), getAsString(), isAddrLabelDiff(), and printPretty().

## ◆ setAddrLabelDiff()

void clang::APValue::setAddrLabelDiff | ( | const AddrLabelExpr * | LHSExpr,
|  | const AddrLabelExpr * | RHSExpr
| ) |  |
| inline

Definition at line 440 of file APValue.h.

Referenced by APValue().

## ◆ setComplexFloat()

void clang::APValue::setComplexFloat | ( | APFloat | R,
|  | APFloat | I
| ) |  |
| inline

Definition at line 423 of file APValue.h.

References isComplexFloat(), and setLValue().

Referenced by APValue().

## ◆ setComplexInt()

void clang::APValue::setComplexInt | ( | APSInt | R,
|  | APSInt | I
| ) |  |
| inline

Definition at line 416 of file APValue.h.

References isComplexInt().

Referenced by APValue().

## ◆ setFloat()

void clang::APValue::setFloat | ( | APFloat | F | ) |
| inline

Definition at line 405 of file APValue.h.

References isFloat().

Referenced by APValue().

## ◆ setInt()

void clang::APValue::setInt | ( | APSInt | I | ) |
| inline

Definition at line 401 of file APValue.h.

References isInt().

Referenced by APValue().

## ◆ setLValue() [1/2]

void APValue::setLValue | ( | LValueBase | B,
|  | const CharUnits & | O,
|  | NoLValuePath | ,
|  | bool | IsNullPtr
| ) |  |

Definition at line 644 of file APValue.cpp.

References isLValue(), and clang::APValue::LV::resizePath().

Referenced by APValue(), and setComplexFloat().

## ◆ setLValue() [2/2]

void APValue::setLValue | ( | LValueBase | B,
|  | const CharUnits & | O,
|  | ArrayRef< LValuePathEntry > | Path,
|  | bool | OnePastTheEnd,
|  | bool | IsNullPtr
| ) |  |

Definition at line 655 of file APValue.cpp.

References clang::APValue::LV::getPath(), isLValue(), memcpy(), and clang::APValue::LV::resizePath().

## ◆ setUnion()

void clang::APValue::setUnion | ( | const FieldDecl * | Field,
|  | const APValue & | Value
| ) |  |
| inline

Definition at line 435 of file APValue.h.

References isUnion().

Referenced by APValue().

## ◆ setVector()

void clang::APValue::setVector | ( | const APValue * | E,
|  | unsigned | N
| ) |  |
| inline

Definition at line 409 of file APValue.h.

References isVector().

Referenced by APValue().

## ◆ swap()

void APValue::swap | ( | APValue & | RHS | ) |

Swaps the contents of this and the given APValue.

Definition at line 292 of file APValue.cpp.

References memcpy().

Referenced by APValue(), extractSubobject(), isOnePastTheEndOfCompleteObject(), operator=(), and ~APValue().

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

- include/clang/AST/APValue.h
- lib/AST/APValue.cpp