clang
7.0.0
|
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... | |
APValue - This class implements a discriminated union of [uninitialized] [APSInt] [APFloat], [Complex APSInt] [Complex APFloat], [Expr + Offset], [Vector: N * APValue], [Array: N * APValue].
typedef llvm::PointerIntPair<const Decl *, 1, bool> clang::APValue::BaseOrMemberType |
|
inlineexplicit |
Definition at line 175 of file APValue.h.
References setFloat().
|
inlineexplicit |
APValue::APValue | ( | const APValue & | RHS | ) |
Definition at line 167 of file APValue.cpp.
References Array, ComplexFloat, ComplexInt, Float, getArrayInitializedElts(), getArraySize(), getComplexFloatImag(), getComplexFloatReal(), getComplexIntImag(), getComplexIntReal(), getFloat(), getInt(), getKind(), getLValueBase(), getLValueOffset(), getLValuePath(), getVectorLength(), hasLValuePath(), Int, isLValueOnePastTheEnd(), isNullPointer(), LValue, setComplexFloat(), setComplexInt(), setFloat(), setInt(), setLValue(), setVector(), Uninitialized, and Vector.
|
inline |
|
inline |
Definition at line 189 of file APValue.h.
References setLValue().
|
inline |
Definition at line 194 of file APValue.h.
References setLValue().
|
inline |
|
inline |
Definition at line 205 of file APValue.h.
References setUnion().
|
inline |
|
inline |
Definition at line 213 of file APValue.h.
References setAddrLabelDiff().
|
inline |
Definition at line 218 of file APValue.h.
References needsCleanup(), and swap().
LLVM_DUMP_METHOD void APValue::dump | ( | ) | const |
Definition at line 300 of file APValue.cpp.
Referenced by dump(), and isAddrLabelDiff().
void APValue::dump | ( | raw_ostream & | OS | ) | const |
Definition at line 313 of file APValue.cpp.
References Array, ComplexFloat, ComplexInt, dump(), Float, GetApproxValue(), getComplexFloatImag(), getComplexFloatReal(), getComplexIntImag(), getComplexIntReal(), getFloat(), getInt(), getKind(), getVectorElt(), getVectorLength(), Int, LValue, Uninitialized, and Vector.
|
inline |
Definition at line 392 of file APValue.h.
References isAddrLabelDiff().
|
inline |
Definition at line 396 of file APValue.h.
References isAddrLabelDiff().
|
inline |
Definition at line 336 of file APValue.h.
References getArrayInitializedElts(), hasArrayFiller(), and isArray().
Referenced by EvaluateVector(), and getArrayFiller().
|
inline |
Definition at line 341 of file APValue.h.
References getArrayFiller().
|
inline |
|
inline |
|
inline |
Definition at line 344 of file APValue.h.
References isArray().
Referenced by APValue(), getArrayFiller(), and hasArrayFiller().
|
inline |
Definition at line 348 of file APValue.h.
References isArray().
Referenced by APValue(), and hasArrayFiller().
std::string APValue::getAsString | ( | ASTContext & | Ctx, |
QualType | Ty | ||
) | const |
Definition at line 587 of file APValue.cpp.
References printPretty(), and clang::Result.
Referenced by CheckConvertedConstantExpression(), DiagnoseNarrowingInInitList(), and isAddrLabelDiff().
|
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().
|
inline |
Definition at line 296 of file APValue.h.
References getComplexFloatImag(), getLValueBase(), and getLValueOffset().
|
inline |
Definition at line 284 of file APValue.h.
References isComplexFloat().
Referenced by APValue(), dump(), getComplexFloatReal(), HandleConversionToBool(), IsSameFloatAfterCast(), needsCleanup(), printPretty(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().
|
inline |
Definition at line 288 of file APValue.h.
References getComplexFloatReal().
|
inline |
Definition at line 276 of file APValue.h.
References isComplexInt().
Referenced by APValue(), dump(), getComplexIntImag(), HandleConversionToBool(), needsCleanup(), printPretty(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().
|
inline |
Definition at line 280 of file APValue.h.
References getComplexIntImag().
|
inline |
Definition at line 268 of file APValue.h.
References isComplexInt().
Referenced by APValue(), dump(), getComplexIntReal(), GetValueRange(), HandleConversionToBool(), needsCleanup(), printPretty(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().
|
inline |
Definition at line 272 of file APValue.h.
References getComplexIntReal().
|
inline |
Definition at line 260 of file APValue.h.
References isFloat().
Referenced by APValue(), dump(), clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(), EvalAndBitcastToAPInt(), getFloat(), clang::StandardConversionSequence::getNarrowingKind(), HandleConversionToBool(), IsSameFloatAfterCast(), needsCleanup(), printPretty(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().
|
inline |
Definition at line 264 of file APValue.h.
References getFloat().
|
inline |
Definition at line 252 of file APValue.h.
References isInt().
Referenced by APValue(), dump(), clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(), EvalAndBitcastToAPInt(), EvaluateCPlusPlus11IntegralConstantExpr(), EvaluateInteger(), EvaluatePointer(), GetAlignOfExpr(), getInt(), clang::ComparisonCategoryInfo::ValueInfo::getIntValue(), GetValueRange(), HandleConversionToBool(), needsCleanup(), printPretty(), shouldAddCase(), truncateBitfieldValue(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().
|
inline |
|
inline |
Definition at line 232 of file APValue.h.
Referenced by APValue(), dump(), EvaluateBuiltinConstantP(), HandleConversionToBool(), needsCleanup(), printPretty(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().
const APValue::LValueBase APValue::getLValueBase | ( | ) | const |
Definition at line 595 of file APValue.cpp.
References isLValue().
Referenced by APValue(), EvalPointerValueAsBool(), getComplexFloatImag(), and printPretty().
unsigned APValue::getLValueCallIndex | ( | ) | const |
CharUnits & APValue::getLValueOffset | ( | ) |
Definition at line 605 of file APValue.cpp.
References isLValue().
Referenced by APValue(), EvalPointerValueAsBool(), getComplexFloatImag(), getLValueOffset(), and printPretty().
|
inline |
Definition at line 302 of file APValue.h.
References getLValueCallIndex(), getLValueOffset(), getLValuePath(), getLValueVersion(), hasLValuePath(), isLValueOnePastTheEnd(), and isNullPointer().
ArrayRef< APValue::LValuePathEntry > APValue::getLValuePath | ( | ) | const |
Definition at line 615 of file APValue.cpp.
References clang::APValue::LV::getPath(), hasLValuePath(), and isLValue().
Referenced by APValue(), and getLValueOffset().
unsigned APValue::getLValueVersion | ( | ) | const |
const ValueDecl * APValue::getMemberPointerDecl | ( | ) | const |
Definition at line 660 of file APValue.cpp.
References isMemberPointer().
Referenced by CheckMemberPointerConstantExpression(), clang::CodeGen::CGCXXABI::getMemberPointerPathAdjustment(), getUnionValue(), and HandleConversionToBool().
ArrayRef< const CXXRecordDecl * > APValue::getMemberPointerPath | ( | ) | const |
Definition at line 674 of file APValue.cpp.
References Array, clang::APValue::MemberPointerData::getPath(), isMemberPointer(), isUninit(), LValue, MemberPointer, memcpy(), and clang::APValue::MemberPointerData::resizePath().
Referenced by clang::CodeGen::CGCXXABI::getMemberPointerPathAdjustment(), and getUnionValue().
|
inline |
|
inline |
Definition at line 369 of file APValue.h.
References getStructBase().
|
inline |
Definition at line 365 of file APValue.h.
References getStructNumBases(), and isStruct().
Referenced by clang::ComparisonCategoryInfo::ValueInfo::getIntValue(), and getStructField().
|
inline |
Definition at line 372 of file APValue.h.
References getStructField().
|
inline |
|
inline |
Definition at line 357 of file APValue.h.
References isStruct().
|
inline |
|
inline |
|
inline |
Definition at line 384 of file APValue.h.
References getMemberPointerDecl(), getMemberPointerPath(), getUnionValue(), and isMemberPointerToDerivedMember().
|
inline |
Definition at line 312 of file APValue.h.
Referenced by dump(), EvalAndBitcastToAPInt(), EvaluateVector(), GetValueRange(), IsSameFloatAfterCast(), and printPretty().
|
inline |
|
inline |
Definition at line 320 of file APValue.h.
References isVector().
Referenced by APValue(), dump(), EvalAndBitcastToAPInt(), EvaluateVector(), GetValueRange(), IsSameFloatAfterCast(), printPretty(), and clang::CodeGen::ConstantEmitter::tryEmitPrivate().
|
inline |
Definition at line 333 of file APValue.h.
References getArrayInitializedElts(), and getArraySize().
Referenced by EvaluateVector(), and getArrayFiller().
bool APValue::hasLValuePath | ( | ) | const |
Definition at line 610 of file APValue.cpp.
References isLValue().
Referenced by APValue(), getLValueOffset(), getLValuePath(), and printPretty().
|
inline |
Definition at line 244 of file APValue.h.
References AddrLabelDiff, dump(), getAsString(), and printPretty().
Referenced by getAddrLabelDiffLHS(), and getAddrLabelDiffRHS().
|
inline |
Definition at line 240 of file APValue.h.
References Array.
Referenced by CheckConstantExpression(), EvaluateVector(), getArrayFiller(), getArrayInitializedElts(), and getArraySize().
|
inline |
Definition at line 237 of file APValue.h.
References ComplexFloat.
Referenced by getComplexFloatImag(), getComplexFloatReal(), and IsSameFloatAfterCast().
|
inline |
Definition at line 236 of file APValue.h.
References ComplexInt.
Referenced by getComplexIntImag(), getComplexIntReal(), and GetValueRange().
|
inline |
Definition at line 235 of file APValue.h.
References Float.
Referenced by clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(), EvalAndBitcastToAPInt(), getFloat(), clang::StandardConversionSequence::getNarrowingKind(), IsSameFloatAfterCast(), and setFloat().
|
inline |
Definition at line 234 of file APValue.h.
References Int.
Referenced by CheckConvertedConstantExpression(), CheckEvalInICE(), clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(), EvalAndBitcastToAPInt(), EvaluateCPlusPlus11IntegralConstantExpr(), EvaluateInteger(), EvaluatePointer(), GetAlignOfExpr(), getInt(), GetValueRange(), shouldAddCase(), and truncateBitfieldValue().
|
inline |
Definition at line 238 of file APValue.h.
References LValue.
Referenced by EvaluateVector(), getLValueBase(), getLValueCallIndex(), getLValueOffset(), getLValuePath(), getLValueVersion(), hasLValuePath(), isLValueOnePastTheEnd(), isNullPointer(), setLValue(), and truncateBitfieldValue().
bool APValue::isLValueOnePastTheEnd | ( | ) | const |
Definition at line 600 of file APValue.cpp.
References isLValue().
Referenced by APValue(), and getLValueOffset().
|
inline |
Definition at line 243 of file APValue.h.
References MemberPointer.
Referenced by getMemberPointerDecl(), getMemberPointerPath(), and isMemberPointerToDerivedMember().
bool APValue::isMemberPointerToDerivedMember | ( | ) | const |
Definition at line 667 of file APValue.cpp.
References isMemberPointer().
Referenced by clang::CodeGen::CGCXXABI::getMemberPointerPathAdjustment(), and getUnionValue().
bool APValue::isNullPointer | ( | ) | const |
Definition at line 631 of file APValue.cpp.
References isLValue().
Referenced by APValue(), getLValueOffset(), and clang::CodeGen::CodeGenFunction::ShouldNullCheckClassCastValue().
|
inline |
Definition at line 241 of file APValue.h.
References Struct.
Referenced by getStructBase(), getStructField(), getStructNumBases(), and getStructNumFields().
|
inline |
Definition at line 233 of file APValue.h.
References Uninitialized.
Referenced by CheckConstantExpression(), clang::VarDecl::evaluateValue(), getMemberPointerPath(), and operator=().
|
inline |
Definition at line 242 of file APValue.h.
References Union.
Referenced by getUnionField(), getUnionValue(), and setUnion().
|
inline |
Definition at line 239 of file APValue.h.
References Vector.
Referenced by EvalAndBitcastToAPInt(), EvaluateTemporary(), GetValueRange(), getVectorLength(), and IsSameFloatAfterCast().
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().
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.
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(), getLValueBase(), getLValueOffset(), clang::QualType::getNonReferenceType(), clang::Type::getPointeeType(), getVectorElt(), getVectorLength(), hasLValuePath(), Int, clang::Type::isBooleanType(), clang::QualType::isNull(), clang::Type::isReferenceType(), LValue, printPretty(), Uninitialized, and Vector.
Referenced by describeCall(), getAsString(), isAddrLabelDiff(), and printPretty().
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
void APValue::setLValue | ( | LValueBase | B, |
const CharUnits & | O, | ||
NoLValuePath | , | ||
bool | IsNullPtr | ||
) |
Definition at line 636 of file APValue.cpp.
References isLValue(), and clang::APValue::LV::resizePath().
Referenced by APValue().
void APValue::setLValue | ( | LValueBase | B, |
const CharUnits & | O, | ||
ArrayRef< LValuePathEntry > | Path, | ||
bool | OnePastTheEnd, | ||
bool | IsNullPtr | ||
) |
Definition at line 647 of file APValue.cpp.
References clang::APValue::LV::getPath(), isLValue(), memcpy(), and clang::APValue::LV::resizePath().
|
inline |
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(), isOnePastTheEndOfCompleteObject(), operator=(), and ~APValue().