clang API Documentation
#include <SVals.h>


Public Types | |
| enum | BaseKind { UndefinedKind = 0, UnknownKind = 1, LocKind = 2, NonLocKind = 3 } |
| enum | { BaseBits = 2, BaseMask = 0x3 } |
| typedef SmallVector< SVal, 5 > | BufferTy |
| BufferTy - A temporary buffer to hold a set of SVals. | |
Public Member Functions | |
| SVal () | |
| ~SVal () | |
| unsigned | getRawKind () const |
| BaseKind | getBaseKind () const |
| unsigned | getSubKind () const |
| void | Profile (llvm::FoldingSetNodeID &ID) const |
| bool | operator== (const SVal &R) const |
| bool | operator!= (const SVal &R) const |
| bool | isUnknown () const |
| bool | isUndef () const |
| bool | isUnknownOrUndef () const |
| bool | isValid () const |
| bool | isConstant () const |
| bool | isConstant (int I) const |
| bool | isZeroConstant () const |
| bool | hasConjuredSymbol () const |
| hasConjuredSymbol - If this SVal wraps a conjured symbol, return true; | |
| const FunctionDecl * | getAsFunctionDecl () const |
| SymbolRef | getAsLocSymbol () const |
| SymbolRef | getLocSymbolInBase () const |
| Get the symbol in the SVal or its base region. | |
| SymbolRef | getAsSymbol () const |
| If this SVal wraps a symbol return that SymbolRef. Otherwise return 0. | |
| const SymExpr * | getAsSymbolicExpression () const |
| const SymExpr * | getAsSymExpr () const |
| const MemRegion * | getAsRegion () const |
| void | dumpToStream (raw_ostream &OS) const |
| void | dump () const |
| SymExpr::symbol_iterator | symbol_begin () const |
| SymExpr::symbol_iterator | symbol_end () const |
Static Public Member Functions | |
| static bool | classof (const SVal *) |
Protected Member Functions | |
| SVal (const void *d, bool isLoc, unsigned ValKind) | |
| SVal (BaseKind k, const void *D=NULL) | |
Protected Attributes | |
| const void * | Data |
| unsigned | Kind |
SVal - This represents a symbolic expression, which can be either an L-value or an R-value.
| typedef SmallVector<SVal,5> clang::ento::SVal::BufferTy |
| clang::ento::SVal::SVal | ( | const void * | d, |
| bool | isLoc, | ||
| unsigned | ValKind | ||
| ) | [inline, explicit, protected] |
| clang::ento::SVal::SVal | ( | BaseKind | k, |
| const void * | D = NULL |
||
| ) | [inline, explicit, protected] |
| static bool clang::ento::SVal::classof | ( | const SVal * | ) | [inline, static] |
Reimplemented in clang::ento::loc::ObjCPropRef, clang::ento::loc::ConcreteInt, clang::ento::loc::MemRegionVal, clang::ento::loc::GotoLabel, clang::ento::nonloc::LazyCompoundVal, clang::ento::nonloc::CompoundVal, clang::ento::nonloc::LocAsInteger, clang::ento::nonloc::ConcreteInt, clang::ento::nonloc::SymbolVal, clang::ento::Loc, clang::ento::NonLoc, clang::ento::DefinedSVal, clang::ento::UnknownVal, clang::ento::DefinedOrUnknownSVal, and clang::ento::UndefinedVal.
| void clang::ento::SVal::dump | ( | ) | const |
| void clang::ento::SVal::dumpToStream | ( | raw_ostream & | OS | ) | const |
Reimplemented in clang::ento::Loc, and clang::ento::NonLoc.
Referenced by llvm::operator<<().
| const FunctionDecl * SVal::getAsFunctionDecl | ( | ) | const |
getAsFunctionDecl - If this SVal is a MemRegionVal and wraps a CodeTextRegion wrapping a FunctionDecl, return that FunctionDecl. Otherwise return 0.
Definition at line 50 of file SVals.cpp.
References clang::ento::MemRegion::getAs().
Referenced by clang::ento::CheckerContext::getCalleeDecl(), and clang::ento::ExprEngine::VisitCallExpr().
| SymbolRef SVal::getAsLocSymbol | ( | ) | const |
If this SVal is a location (subclasses Loc) and wraps a symbol, return that SymbolRef. Otherwise return 0.
Implicit casts (ex: void* -> char*) can turn Symbolic region into Element region. If that is the case, gets the underlining region.
Definition at line 65 of file SVals.cpp.
Referenced by getAsSymbol(), clang::ento::StackHintGeneratorForSymbol::getMessage(), and clang::ento::StoreManager::FindUniqueBinding::HandleBinding().
| const MemRegion * SVal::getAsRegion | ( | ) | const |
Definition at line 125 of file SVals.cpp.
Referenced by clang::ento::SValBuilder::evalCast(), clang::ento::ExprEngine::evalLoad(), clang::ento::ExprEngine::invalidateArguments(), clang::ento::BugReport::markInteresting(), clang::ento::ConditionBRVisitor::patternMatch(), clang::ento::ExprEngine::VisitBlockExpr(), clang::ento::ConditionBRVisitor::VisitConditionVariable(), and clang::ento::ExprEngine::VisitCXXNewExpr().
| SymbolRef SVal::getAsSymbol | ( | ) | const |
If this SVal wraps a symbol return that SymbolRef. Otherwise return 0.
If this SVal wraps a symbol return that SymbolRef. Otherwise, return 0.
Definition at line 101 of file SVals.cpp.
References getAsLocSymbol().
Referenced by getAsSymbolicExpression(), getAsSymExpr(), clang::ento::BugReport::markInteresting(), and clang::ento::ScanReachableSymbols::scan().
| const SymExpr * SVal::getAsSymbolicExpression | ( | ) | const |
getAsSymbolicExpression - If this Sval wraps a symbolic expression then return that expression. Otherwise return NULL.
Definition at line 111 of file SVals.cpp.
References getAsSymbol().
Referenced by getAsSymExpr(), clang::ento::ScanReachableSymbols::scan(), and symbol_begin().
| const SymExpr * SVal::getAsSymExpr | ( | ) | const |
Definition at line 118 of file SVals.cpp.
References getAsSymbol(), and getAsSymbolicExpression().
Referenced by clang::ento::SimpleConstraintManager::assumeAux(), and clang::ento::SValBuilder::makeSymExprValNN().
| BaseKind clang::ento::SVal::getBaseKind | ( | ) | const [inline] |
Definition at line 77 of file SVals.h.
References BaseMask.
Referenced by clang::ento::UndefinedVal::classof(), clang::ento::UnknownVal::classof(), clang::ento::NonLoc::classof(), clang::ento::Loc::classof(), clang::ento::nonloc::SymbolVal::classof(), clang::ento::nonloc::ConcreteInt::classof(), clang::ento::nonloc::LocAsInteger::classof(), clang::ento::nonloc::CompoundVal::classof(), clang::ento::nonloc::LazyCompoundVal::classof(), clang::ento::loc::GotoLabel::classof(), clang::ento::loc::MemRegionVal::classof(), clang::ento::loc::ConcreteInt::classof(), and clang::ento::loc::ObjCPropRef::classof().
| SymbolRef SVal::getLocSymbolInBase | ( | ) | const |
Get the symbol in the SVal or its base region.
Definition at line 79 of file SVals.cpp.
References clang::ento::loc::MemRegionVal::getRegion().
| unsigned clang::ento::SVal::getRawKind | ( | ) | const [inline] |
Definition at line 76 of file SVals.h.
References Kind.
Referenced by isUndef(), isUnknown(), isUnknownOrUndef(), isValid(), operator==(), and Profile().
| unsigned clang::ento::SVal::getSubKind | ( | ) | const [inline] |
Definition at line 78 of file SVals.h.
References BaseBits, and BaseMask.
Referenced by clang::ento::SimpleConstraintManager::assumeAux(), clang::ento::nonloc::SymbolVal::classof(), clang::ento::nonloc::ConcreteInt::classof(), clang::ento::nonloc::LocAsInteger::classof(), clang::ento::nonloc::CompoundVal::classof(), clang::ento::nonloc::LazyCompoundVal::classof(), clang::ento::loc::GotoLabel::classof(), clang::ento::loc::MemRegionVal::classof(), clang::ento::loc::ConcreteInt::classof(), and clang::ento::loc::ObjCPropRef::classof().
| bool SVal::hasConjuredSymbol | ( | ) | const |
| bool clang::ento::SVal::isConstant | ( | ) | const |
| bool clang::ento::SVal::isConstant | ( | int | I | ) | const |
| bool clang::ento::SVal::isUndef | ( | ) | const [inline] |
Definition at line 99 of file SVals.h.
References getRawKind(), and UndefinedKind.
Referenced by clang::ento::DefinedOrUnknownSVal::classof(), clang::ento::loc::ConcreteInt::evalBinOp(), clang::ento::ExprEngine::evalStore(), clang::ento::SubEngine::processSwitch(), clang::ento::StoreManager::removeDeadBindings(), clang::ento::ExprEngine::VisitGuardedExpr(), clang::ento::ExprEngine::VisitLogicalExpr(), clang::ento::ConditionBRVisitor::VisitNode(), and clang::ento::ExprEngine::VisitObjCMessage().
| bool clang::ento::SVal::isUnknown | ( | ) | const [inline] |
Definition at line 95 of file SVals.h.
References getRawKind(), and UnknownKind.
Referenced by clang::ento::ProgramState::assume(), clang::ento::ProgramState::assumeInBound(), clang::ento::EnvironmentManager::bindExpr(), clang::ento::FindLastStoreBRVisitor::createVisitorObject(), clang::ento::loc::ConcreteInt::evalBinOp(), clang::ento::ExprEngine::evalObjCMessage(), clang::ento::FindLastStoreBRVisitor::FindLastStoreBRVisitor(), clang::ento::SubEngine::processBranch(), clang::ento::ExprEngine::VisitCast(), clang::ento::ExprEngine::VisitDeclStmt(), and clang::ento::ExprEngine::VisitIncrementDecrementOperator().
| bool clang::ento::SVal::isUnknownOrUndef | ( | ) | const [inline] |
Definition at line 103 of file SVals.h.
References getRawKind(), and UnknownKind.
Referenced by clang::ento::ProgramState::assumeInBound(), clang::ento::StoreManager::CastRetrievedVal(), clang::ento::DefinedSVal::classof(), clang::ento::SValBuilder::convertToArrayIndex(), clang::ento::SValBuilder::evalCast(), clang::ento::StoreManager::getLValueElement(), and clang::ento::SubEngine::processBranch().
| bool clang::ento::SVal::isValid | ( | ) | const [inline] |
Definition at line 107 of file SVals.h.
References getRawKind(), and UnknownKind.
Referenced by clang::ento::ExprEngine::evalBinOp(), clang::ento::ExprEngine::evalComplement(), and clang::ento::ExprEngine::evalMinus().
| bool SVal::isZeroConstant | ( | ) | const |
Definition at line 178 of file SVals.cpp.
Referenced by clang::ento::ExprEngine::VisitCast().
| bool clang::ento::SVal::operator!= | ( | const SVal & | R | ) | const [inline] |
| bool clang::ento::SVal::operator== | ( | const SVal & | R | ) | const [inline] |
Definition at line 87 of file SVals.h.
References Data, and getRawKind().
| void clang::ento::SVal::Profile | ( | llvm::FoldingSetNodeID & | ID | ) | const [inline] |
Definition at line 82 of file SVals.h.
References Data, and getRawKind().
Referenced by clang::ento::BasicValueFactory::getPersistentSValPair(), and clang::ento::BasicValueFactory::getPersistentSValWithData().
| SymExpr::symbol_iterator clang::ento::SVal::symbol_begin | ( | ) | const [inline] |
Definition at line 147 of file SVals.h.
References getAsSymbolicExpression(), and clang::ento::SymExpr::symbol_begin().
| SymExpr::symbol_iterator clang::ento::SVal::symbol_end | ( | ) | const [inline] |
const void* clang::ento::SVal::Data [protected] |
Definition at line 57 of file SVals.h.
Referenced by clang::ento::nonloc::LazyCompoundVal::getCVData(), clang::ento::UndefinedVal::getData(), clang::ento::loc::GotoLabel::getLabel(), clang::ento::nonloc::LocAsInteger::getLoc(), clang::ento::nonloc::LocAsInteger::getNumBits(), clang::ento::nonloc::LocAsInteger::getPersistentLoc(), clang::ento::loc::ObjCPropRef::getPropRefExpr(), clang::ento::loc::MemRegionVal::getRegion(), clang::ento::nonloc::SymbolVal::getSymbol(), clang::ento::nonloc::ConcreteInt::getValue(), clang::ento::nonloc::CompoundVal::getValue(), clang::ento::loc::ConcreteInt::getValue(), operator==(), and Profile().
unsigned clang::ento::SVal::Kind [protected] |
The lowest 2 bits are a BaseKind (0 -- 3). The higher bits are an unsigned "kind" value.
Definition at line 61 of file SVals.h.
Referenced by getRawKind().