Lines Matching defs:ProgramState

1 //= ProgramState.cpp - Path-Sensitive "State" for tracking values --*- C++ -*--=
10 // This file implements ProgramState and ProgramStateManager.
14 #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h"
28 void ProgramStateRetain(const ProgramState *state) {
29 ++const_cast<ProgramState*>(state)->refCount;
33 void ProgramStateRelease(const ProgramState *state) {
35 ProgramState *s = const_cast<ProgramState*>(state);
39 s->~ProgramState();
45 ProgramState::ProgramState(ProgramStateManager *mgr, const Environment& env,
55 ProgramState::ProgramState(const ProgramState &RHS)
65 ProgramState::~ProgramState() {
100 ProgramState NewState = *state;
114 ProgramStateRef ProgramState::bindLoc(Loc LV, SVal V, bool notifyChanges) const {
125 ProgramStateRef ProgramState::bindDefault(SVal loc, SVal V) const {
139 ProgramState::invalidateRegions(RegionList Regions,
156 ProgramState::invalidateRegions(ValueList Values,
169 ProgramState::invalidateRegionsImpl(ValueList Values,
214 ProgramStateRef ProgramState::killBinding(Loc LV) const {
228 ProgramState::enterStackFrame(const CallEvent &Call,
235 SVal ProgramState::getSValAsScalarOrLoc(const MemRegion *R) const {
251 SVal ProgramState::getSVal(Loc location, QualType T) const {
290 ProgramStateRef ProgramState::BindExpr(const Stmt *S,
299 ProgramState NewSt = *this;
304 ProgramStateRef ProgramState::assumeInBound(DefinedOrUnknownSVal Idx,
350 ConditionTruthVal ProgramState::isNull(SVal V) const {
365 ProgramState State(this,
376 ProgramState NewState(*FromState);
381 ProgramStateRef ProgramStateManager::getPersistentState(ProgramState &State) {
387 if (ProgramState *I = StateSet.FindNodeOrInsertPos(ID, InsertPos))
390 ProgramState *newState = nullptr;
396 newState = (ProgramState*) Alloc.Allocate<ProgramState>();
398 new (newState) ProgramState(State);
403 ProgramStateRef ProgramState::makeWithStore(const StoreRef &store) const {
404 ProgramState NewSt(*this);
409 void ProgramState::setStore(const StoreRef &newStore) {
422 void ProgramState::print(raw_ostream &Out,
438 void ProgramState::printDOT(raw_ostream &Out) const {
442 void ProgramState::dump() const {
446 void ProgramState::printTaint(raw_ostream &Out,
458 void ProgramState::dumpTaint() const {
466 void *const* ProgramState::FindGDM(void *K) const {
485 ProgramState::GenericDataMap M1 = St->getGDM();
486 ProgramState::GenericDataMap M2 = GDMFactory.add(M1, Key, Data);
491 ProgramState NewSt = *St;
497 ProgramState::GenericDataMap OldM = state->getGDM();
498 ProgramState::GenericDataMap NewM = GDMFactory.remove(OldM, Key);
503 ProgramState NewState = *state;
625 bool ProgramState::scanReachableSymbols(SVal val, SymbolVisitor& visitor) const {
630 bool ProgramState::scanReachableSymbols(const SVal *I, const SVal *E,
640 bool ProgramState::scanReachableSymbols(const MemRegion * const *I,
651 ProgramStateRef ProgramState::addTaint(const Stmt *S,
668 ProgramStateRef ProgramState::addTaint(const MemRegion *R,
675 ProgramStateRef ProgramState::addTaint(SymbolRef Sym,
687 bool ProgramState::isTainted(const Stmt *S, const LocationContext *LCtx,
696 bool ProgramState::isTainted(SVal V, TaintTagType Kind) const {
704 bool ProgramState::isTainted(const MemRegion *Reg, TaintTagType K) const {
722 bool ProgramState::isTainted(SymbolRef Sym, TaintTagType Kind) const {
761 DynamicTypeInfo ProgramState::getDynamicTypeInfo(const MemRegion *Reg) const {
781 ProgramStateRef ProgramState::setDynamicTypeInfo(const MemRegion *Reg,