19 using namespace clang;
24 switch (LoopStmt->getStmtClass()) {
27 case Stmt::ForStmtClass:
28 return cast<ForStmt>(LoopStmt)->getCond();
29 case Stmt::WhileStmtClass:
30 return cast<WhileStmt>(LoopStmt)->getCond();
31 case Stmt::DoStmtClass:
32 return cast<DoStmt>(LoopStmt)->getCond();
41 unsigned BlockCount,
const Stmt *LoopStmt) {
43 assert(isa<ForStmt>(LoopStmt) || isa<WhileStmt>(LoopStmt) ||
44 isa<DoStmt>(LoopStmt));
58 for (
auto *Region : Regions) {
63 BlockCount, LCtx,
true,
nullptr,
nullptr,
MemRegion - The root abstract class for all memory regions.
Information about invalidation for a particular region/symbol.
const GlobalsSpaceRegion * getGlobalsRegion(MemRegion::Kind K=MemRegion::GlobalInternalSpaceRegionKind, const CodeTextRegion *R=nullptr)
getGlobalsRegion - Retrieve the memory region associated with global variables.
const StackArgumentsSpaceRegion * getStackArgumentsRegion(const StackFrameContext *STC)
getStackArgumentsRegion - Retrieve the memory region associated with function/method arguments of the...
void setTrait(SymbolRef Sym, InvalidationKinds IK)
const StackLocalsSpaceRegion * getStackLocalsRegion(const StackFrameContext *STC)
getStackLocalsRegion - Retrieve the memory region associated with the specified stack frame...
When applied to a MemSpaceRegion, indicates the entire memory space should be invalidated.
Expr - This represents one expression.
static const Expr * getLoopCondition(const Stmt *LoopStmt)
Return the loops condition Stmt or NULL if LoopStmt is not a loop.
ProgramStateRef getWidenedLoopState(ProgramStateRef PrevState, const LocationContext *LCtx, unsigned BlockCount, const Stmt *LoopStmt)
Get the states that result from widening the loop.
const StackFrameContext * getCurrentStackFrame() const