13 #ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SUBENGINE_H
14 #define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SUBENGINE_H
24 class LocationContext;
29 struct NodeBuilderContext;
30 class AnalysisManager;
31 class ExplodedNodeSet;
34 class ProgramStateManager;
36 class BranchNodeBuilder;
37 class IndirectGotoNodeBuilder;
38 class SwitchNodeBuilder;
39 class EndOfFunctionNodeBuilder;
40 class NodeBuilderWithSinks;
44 virtual void anchor();
116 SVal cond,
bool assumption) = 0;
151 const char *NL,
const char *Sep) = 0;
MemRegion - The root abstract class for all memory regions.
Information about invalidation for a particular region/symbol.
virtual ProgramStateRef getInitialState(const LocationContext *InitLoc)=0
virtual void processEndOfFunction(NodeBuilderContext &BC, ExplodedNode *Pred)=0
virtual void processCFGElement(const CFGElement E, ExplodedNode *Pred, unsigned StmtIdx, NodeBuilderContext *Ctx)=0
virtual void processIndirectGoto(IndirectGotoNodeBuilder &builder)=0
virtual ProgramStateManager & getStateManager()=0
virtual void processCleanupTemporaryBranch(const CXXBindTemporaryExpr *BTE, NodeBuilderContext &BldCtx, ExplodedNode *Pred, ExplodedNodeSet &Dst, const CFGBlock *DstT, const CFGBlock *DstF)=0
Represents binding an expression to a temporary.
virtual void processBranch(const Stmt *Condition, const Stmt *Term, NodeBuilderContext &BuilderCtx, ExplodedNode *Pred, ExplodedNodeSet &Dst, const CFGBlock *DstT, const CFGBlock *DstF)=0
virtual ProgramStateRef processRegionChanges(ProgramStateRef state, const InvalidatedSymbols *invalidated, ArrayRef< const MemRegion * > ExplicitRegions, ArrayRef< const MemRegion * > Regions, const CallEvent *Call)=0
virtual void processSwitch(SwitchNodeBuilder &builder)=0
virtual ProgramStateRef processAssume(ProgramStateRef state, SVal cond, bool assumption)=0
virtual void processStaticInitializer(const DeclStmt *DS, NodeBuilderContext &BuilderCtx, ExplodedNode *Pred, ExplodedNodeSet &Dst, const CFGBlock *DstT, const CFGBlock *DstF)=0
virtual ProgramStateRef processPointerEscapedOnBind(ProgramStateRef State, SVal Loc, SVal Val)=0
ProgramStateRef processRegionChange(ProgramStateRef state, const MemRegion *MR)
virtual bool wantsRegionChangeUpdate(ProgramStateRef state)=0
virtual void processCallExit(ExplodedNode *Pred)=0
virtual void processEndWorklist(bool hasWorkRemaining)=0
Called by CoreEngine when the analysis worklist is either empty or the.
This node builder keeps track of the generated sink nodes.
virtual void processCallEnter(CallEnter CE, ExplodedNode *Pred)=0
Represents an abstract call to a function or method along a particular path.
CFGElement - Represents a top-level expression in a basic block.
virtual ProgramStateRef notifyCheckersOfPointerEscape(ProgramStateRef State, const InvalidatedSymbols *Invalidated, ArrayRef< const MemRegion * > ExplicitRegions, ArrayRef< const MemRegion * > Regions, const CallEvent *Call, RegionAndSymbolInvalidationTraits &HTraits)=0
virtual void printState(raw_ostream &Out, ProgramStateRef State, const char *NL, const char *Sep)=0
printState - Called by ProgramStateManager to print checker-specific data.
virtual void processCFGBlockEntrance(const BlockEdge &L, NodeBuilderWithSinks &nodeBuilder, ExplodedNode *Pred)=0
virtual AnalysisManager & getAnalysisManager()=0