14 #ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_ENVIRONMENT_H
15 #define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_ENVIRONMENT_H
19 #include "llvm/ADT/ImmutableMap.h"
27 class EnvironmentManager;
35 const StackFrameContext *> {
82 env->ExprBindings.Profile(ID);
92 return ExprBindings == RHS.ExprBindings;
95 void print(raw_ostream &Out,
const char *NL,
const char *Sep)
const;
98 void printAux(raw_ostream &Out,
bool printLocations,
99 const char *NL,
const char *Sep)
const;
104 typedef Environment::BindingsTy::Factory FactoryTy;
EnvironmentEntry(const Stmt *s, const LocationContext *L)
bool operator==(const Environment &RHS) const
void print(raw_ostream &Out, const char *NL, const char *Sep) const
void Profile(llvm::FoldingSetNodeID &ID) const
SVal getSVal(const EnvironmentEntry &E, SValBuilder &svalBuilder) const
Environment bindExpr(Environment Env, const EnvironmentEntry &E, SVal V, bool Invalidate)
Bind a symbolic value to the given environment entry.
BindingsTy::iterator iterator
ID
Defines the set of possible language-specific address spaces.
void Profile(llvm::FoldingSetNodeID &ID) const
const Stmt * getStmt() const
static void Profile(llvm::FoldingSetNodeID &ID, const EnvironmentEntry &E)
Profile an EnvironmentEntry for inclusion in a FoldingSet.
Environment getInitialEnvironment()
static void Profile(llvm::FoldingSetNodeID &ID, const Environment *env)
A class responsible for cleaning up unused symbols.
An immutable map from EnvironemntEntries to SVals.
const LocationContext * getLocationContext() const
EnvironmentManager(llvm::BumpPtrAllocator &Allocator)
Environment removeDeadBindings(Environment Env, SymbolReaper &SymReaper, ProgramStateRef state)