- Dec 07, 2009
-
-
Ted Kremenek authored
- Refactor the MemRegion hierarchy to distinguish between different StackSpaceRegions for locals and parameters. - VarRegions for "captured" variables now have the BlockDataRegion as their super region (except those passed by reference) - Add transfer function support to GRExprEngine for BlockDeclRefExprs. This change also supports analyzing blocks as an analysis entry point (top-of-the-stack), which required pushing more context-sensitivity around in the MemRegion hierarchy via the use of LocationContext objects. Functionally almost everything is the same, except we track LocationContexts in a few more areas and StackSpaceRegions now refer to a StackFrameContext object. In the future we will need to modify MemRegionManager to allow multiple StackSpaceRegions in flight at once (for the analysis of multiple stack frames). llvm-svn: 90809
-
Zhongxing Xu authored
handler to this interface. GRExprEngine::CheckerEvalCall() will return true if one of the checkers has processed the node. In the future this might return void when we have some default checker. llvm-svn: 90755
-
- Dec 04, 2009
-
-
Ted Kremenek authored
llvm-svn: 90585
-
Ted Kremenek authored
llvm-svn: 90584
-
Ted Kremenek authored
llvm-svn: 90583
-
Ted Kremenek authored
llvm-svn: 90582
-
Ted Kremenek authored
Rename instance variable to avoid name conflict with parameters, and modify addTransition() to compare the correct state values. llvm-svn: 90552
-
Ted Kremenek authored
Allow BlockInvocationContext to wrap either a BlockDecl* or a BlockDataRegion*, giving us choice in our degree of context-sensitivity. llvm-svn: 90516
-
Ted Kremenek authored
llvm-svn: 90509
-
Ted Kremenek authored
Refactor FoldingSet profiling code for LocationContexts, and add a new BlockInvocationContext to represent the invocation of a block. llvm-svn: 90506
-
Ted Kremenek authored
llvm-svn: 90503
-
Ted Kremenek authored
llvm-svn: 90499
-
- Dec 03, 2009
-
-
Ted Kremenek authored
Tweak handling of BlockDataRegions in RegionStoreManager::RemoveDeadBindings(): only the VarRegions for variables marked with the '__block' annotation should have their lifetime extended by a BlockDataRegion. llvm-svn: 90462
-
Zhongxing Xu authored
Patch by Lei Zhang! llvm-svn: 90444
-
Daniel Dunbar authored
llvm-svn: 90443
-
Ted Kremenek authored
Add value invalidation logic for block-captured variables. Conceptually invoking a block (without specific reasoning of what the block does) can invalidate any value to it by reference when the block was created. llvm-svn: 90431
-
Ted Kremenek authored
Make BlockDataRegion::referenced_vars_iterator an actual class that enforces that all MemRegions iterated over are VarRegions. llvm-svn: 90430
-
Daniel Dunbar authored
llvm-svn: 90424
-
Ted Kremenek authored
Add batch version of 'StoreManager::InvalidateRegion()' for invalidating multiple regions as once. After adopting this in the CFRefCount::EvalCall(), we see a reduction in analysis time of 1.5% when analyzing all of SQLite3. llvm-svn: 90405
-
Ted Kremenek authored
Add a heuristic to the dead stores checker to prune dead stores for variables annotated with '__block'. This is overly conservative, but now the analyzer doesn't report dead stores for variables that can be updated by a block call. llvm-svn: 90364
-
- Dec 02, 2009
-
-
Zhongxing Xu authored
we don't need to use the DoneEvaluation hack when check for ObjCMessageExpr. PreVisitObjCMessageExpr() only checks for undefined receiver or arguments. Add checker interface EvalNilReceiver(). This is a 'once-and-done' interface. llvm-svn: 90296
-
- Dec 01, 2009
-
-
Ted Kremenek authored
llvm-svn: 90267
-
Ted Kremenek authored
Fix early-return logic in scanReachableSymbols() to match the rest of the recursive logic in the methods of ScanReachableSymbols. llvm-svn: 90245
-
- Nov 30, 2009
-
-
Douglas Gregor authored
llvm-svn: 90139
-
Tobias Grosser authored
llvm-svn: 90137
-
- Nov 29, 2009
-
-
Benjamin Kramer authored
llvm-svn: 90086
-
Benjamin Kramer authored
llvm-svn: 90084
-
Ted Kremenek authored
llvm-svn: 90060
-
- Nov 28, 2009
-
-
Benjamin Kramer authored
llvm-svn: 90034
-
Benjamin Kramer authored
llvm-svn: 90032
-
Kovarththanan Rajaratnam authored
llvm-svn: 90028
-
- Nov 26, 2009
-
-
Ted Kremenek authored
Improve diagnostics in ReturnStackAddressChecker for returning a stack-allocated block. Implements the rest of <rdar://problem/7387385>. llvm-svn: 89940
-
Ted Kremenek authored
the set of variables "captured" by a block. Until the analysis gets more sophisticated, for now we stop the retain count tracking of any objects (transitively) referenced by these variables. llvm-svn: 89929
-
Ted Kremenek authored
Teach RegionStoreManager::RemoveDeadBindings() about BlockDataRegions. Any VarRegion for a "captured" variable should also be considered live. llvm-svn: 89928
-
Ted Kremenek authored
Add iterators to BlockDataRegion that allow clients to iterate over the VarRegions for "captured" variables for a block. llvm-svn: 89927
-
Ted Kremenek authored
Added batch versions of GRState::scanReachableSymbols() so that clients can scan a collection of SVals or MemRegions all at once. llvm-svn: 89926
-
Ted Kremenek authored
Enhance LiveVariables to understand that blocks can extend the liveness of a variable by "capturing" them in a BlockExpr. This required two changes: 1) Added 'getReferencedgetReferencedBlockVars()' to AnalysisContext so that clients can iterate over the "captured" variables in a block. 2) Modified LiveVariables to take an AnalysisContext& in its constructor and to call getReferencedgetReferencedBlockVars() when it processes a BlockExpr*. llvm-svn: 89924
-
Ted Kremenek authored
llvm-svn: 89903
-
Ted Kremenek authored
'BlockDataRegion' to distinguish between the code associated with a block (which is represented by 'BlockTextRegion') and an instance of a block, which includes both code and data. 'BlockDataRegion' has an associated LocationContext, which can be used to eventually model the lifetime of a block object once LocationContexts can represent scopes (and iterations around a loop, etc.). llvm-svn: 89900
-
Ted Kremenek authored
llvm-svn: 89897
-