From: Anna Zaks Date: Fri, 21 Dec 2012 01:50:14 +0000 (+0000) Subject: [analyzer] Address Jordan's nitpicks as per code review of r170625. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1655bcd052a67a3050fc55df8ecce57342352e68;p=clang [analyzer] Address Jordan's nitpicks as per code review of r170625. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170832 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/StaticAnalyzer/Core/CheckerManager.h b/include/clang/StaticAnalyzer/Core/CheckerManager.h index 80e06c1e84..12de1082a9 100644 --- a/include/clang/StaticAnalyzer/Core/CheckerManager.h +++ b/include/clang/StaticAnalyzer/Core/CheckerManager.h @@ -318,22 +318,23 @@ public: /// \brief Run checkers when pointers escape. /// /// This notifies the checkers about pointer escape, which occurs whenever - /// the analzyer cannot track the symbol any more. For example, as a + /// the analyzer cannot track the symbol any more. For example, as a /// result of assigning a pointer into a global or when it's passed to a /// function call the analyzer cannot model. /// /// \param State The state at the point of escape. /// \param Escaped The list of escaped symbols. /// \param Call The corresponding CallEvent, if the symbols escape as - /// parameters to the given call. + /// parameters to the given call. /// \returns Checkers can modify the state by returning a new one. - ProgramStateRef runCheckersForPointerEscape(ProgramStateRef State, - const InvalidatedSymbols &Escaped, - const CallEvent *Call); + ProgramStateRef + runCheckersForPointerEscape(ProgramStateRef State, + const InvalidatedSymbols &Escaped, + const CallEvent *Call); /// \brief Run checkers for handling assumptions on symbolic values. ProgramStateRef runCheckersForEvalAssume(ProgramStateRef state, - SVal Cond, bool Assumption); + SVal Cond, bool Assumption); /// \brief Run checkers for evaluating a call. /// diff --git a/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h b/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h index 7c56062152..df3f45f63f 100644 --- a/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h +++ b/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h @@ -459,9 +459,11 @@ protected: SVal location, SVal Val, bool atDeclInit = false, const ProgramPoint *PP = 0); + /// Call PointerEscape callback when a value escapes as a result of bind. ProgramStateRef processPointerEscapedOnBind(ProgramStateRef State, SVal Loc, SVal Val); - + /// Call PointerEscape callback when a value escapes as a result of + /// region invalidation. ProgramStateRef processPointerEscapedOnInvalidateRegions( ProgramStateRef State, const InvalidatedSymbols *Invalidated, diff --git a/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h b/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h index 0857d127b7..ef2278c94f 100644 --- a/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h +++ b/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h @@ -220,19 +220,21 @@ public: /// /// \param Regions the set of regions to be invalidated. /// \param E the expression that caused the invalidation. - /// \param BlockCount the current basic block count. - /// \param ResultsInPointerEscape the flag is set to true when - /// the invalidation is due to escape of a symbol (representing a pointer). - /// For example, due to it being passed as an argument in a call. + /// \param BlockCount The number of times the current basic block has been + // visited. + /// \param CausedByPointerEscape the flag is set to true when + /// the invalidation is due to escape of a symbol (representing a + /// pointer). For example, due to it being passed as an argument in a + /// call. /// \param IS the set of invalidated symbols. - /// \param If Call is non-null, the invalidated regions were directly - /// invalidated by the call - as parameters. + /// \param Call if non-null, the invalidated regions represent parameters to + /// the call and should be considered directly invalidated. ProgramStateRef invalidateRegions(ArrayRef Regions, - const Expr *E, unsigned BlockCount, - const LocationContext *LCtx, - bool ResultsInPointerEscape, - InvalidatedSymbols *IS = 0, - const CallEvent *Call = 0) const; + const Expr *E, unsigned BlockCount, + const LocationContext *LCtx, + bool CausedByPointerEscape, + InvalidatedSymbols *IS = 0, + const CallEvent *Call = 0) const; /// enterStackFrame - Returns the state for entry to the given stack frame, /// preserving the current state. diff --git a/lib/StaticAnalyzer/Checkers/CStringChecker.cpp b/lib/StaticAnalyzer/Checkers/CStringChecker.cpp index 9fbf97641f..889b2363f6 100644 --- a/lib/StaticAnalyzer/Checkers/CStringChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/CStringChecker.cpp @@ -817,7 +817,7 @@ ProgramStateRef CStringChecker::InvalidateBuffer(CheckerContext &C, // Invalidate this region. const LocationContext *LCtx = C.getPredecessor()->getLocationContext(); return state->invalidateRegions(R, E, C.blockCount(), LCtx, - /*ResultsInPointerEscape*/ false); + /*CausedByPointerEscape*/ false); } // If we have a non-region value by chance, just remove the binding. diff --git a/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp b/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp index fa2c4ffb11..a6e0931abd 100644 --- a/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp +++ b/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp @@ -257,7 +257,7 @@ public: /// \brief Called when pointers escape. /// /// This notifies the checkers about pointer escape, which occurs whenever - /// the analzyer cannot track the symbol any more. For example, as a + /// the analyzer cannot track the symbol any more. For example, as a /// result of assigning a pointer into a global or when it's passed to a /// function call the analyzer cannot model. /// diff --git a/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp b/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp index b57c6e2b4f..150b4be34c 100644 --- a/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp @@ -3179,7 +3179,7 @@ bool RetainCountChecker::evalCall(const CallExpr *CE, CheckerContext &C) const { // Invalidate the argument region. state = state->invalidateRegions(ArgRegion, CE, C.blockCount(), LCtx, - /*ResultsInPointerEscape*/ false); + /*CausedByPointerEscape*/ false); // Restore the refcount status of the argument. if (Binding) diff --git a/lib/StaticAnalyzer/Core/CallEvent.cpp b/lib/StaticAnalyzer/Core/CallEvent.cpp index 3709fd94ed..a75efc60b9 100644 --- a/lib/StaticAnalyzer/Core/CallEvent.cpp +++ b/lib/StaticAnalyzer/Core/CallEvent.cpp @@ -199,7 +199,7 @@ ProgramStateRef CallEvent::invalidateRegions(unsigned BlockCount, // global variables. return Result->invalidateRegions(RegionsToInvalidate, getOriginExpr(), BlockCount, getLocationContext(), - /*ResultsInPointerEscape*/ true, + /*CausedByPointerEscape*/ true, /*Symbols=*/0, this); } diff --git a/lib/StaticAnalyzer/Core/ExprEngine.cpp b/lib/StaticAnalyzer/Core/ExprEngine.cpp index 6b33940463..2e2f00ddc4 100644 --- a/lib/StaticAnalyzer/Core/ExprEngine.cpp +++ b/lib/StaticAnalyzer/Core/ExprEngine.cpp @@ -1602,14 +1602,13 @@ public: }; } // end anonymous namespace -/// Call PointerEscape callback when a value escapes as a result of bind. -/// A value escapes in three possible cases: -/// (1) we are binding to something that is not a memory region. -/// (2) we are binding to a memregion that does not have stack storage -/// (3) we are binding to a memregion with stack storage that the store -/// does not understand. +// A value escapes in three possible cases: +// (1) We are binding to something that is not a memory region. +// (2) We are binding to a MemrRegion that does not have stack storage. +// (3) We are binding to a MemRegion with stack storage that the store +// does not understand. ProgramStateRef ExprEngine::processPointerEscapedOnBind(ProgramStateRef State, - SVal Loc, SVal Val) { + SVal Loc, SVal Val) { // Are we storing to something that causes the value to "escape"? bool escapes = true; @@ -1647,8 +1646,6 @@ ProgramStateRef ExprEngine::processPointerEscapedOnBind(ProgramStateRef State, return State; } -/// Call PointerEscape callback when a value escapes as a result of -/// region invalidation. ProgramStateRef ExprEngine::processPointerEscapedOnInvalidateRegions(ProgramStateRef State, const InvalidatedSymbols *Invalidated, diff --git a/lib/StaticAnalyzer/Core/ProgramState.cpp b/lib/StaticAnalyzer/Core/ProgramState.cpp index 15662776d9..73350d88eb 100644 --- a/lib/StaticAnalyzer/Core/ProgramState.cpp +++ b/lib/StaticAnalyzer/Core/ProgramState.cpp @@ -144,16 +144,16 @@ ProgramStateRef ProgramState::invalidateRegions(ArrayRef Regions, const Expr *E, unsigned Count, const LocationContext *LCtx, - bool ResultsInPointerEscape, + bool CausedByPointerEscape, InvalidatedSymbols *IS, const CallEvent *Call) const { if (!IS) { InvalidatedSymbols invalidated; return invalidateRegionsImpl(Regions, E, Count, LCtx, - ResultsInPointerEscape, + CausedByPointerEscape, invalidated, Call); } - return invalidateRegionsImpl(Regions, E, Count, LCtx, ResultsInPointerEscape, + return invalidateRegionsImpl(Regions, E, Count, LCtx, CausedByPointerEscape, *IS, Call); } @@ -161,7 +161,7 @@ ProgramStateRef ProgramState::invalidateRegionsImpl(ArrayRef Regions, const Expr *E, unsigned Count, const LocationContext *LCtx, - bool ResultsInPointerEscape, + bool CausedByPointerEscape, InvalidatedSymbols &IS, const CallEvent *Call) const { ProgramStateManager &Mgr = getStateManager(); @@ -175,7 +175,7 @@ ProgramState::invalidateRegionsImpl(ArrayRef Regions, ProgramStateRef newState = makeWithStore(newStore); - if (ResultsInPointerEscape) + if (CausedByPointerEscape) newState = Eng->processPointerEscapedOnInvalidateRegions(newState, &IS, Regions, Invalidated, Call);