| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 90509
|
| |
|
|
|
|
| |
BlockInvocationContext to represent the invocation of a block.
llvm-svn: 90506
|
| |
|
|
| |
llvm-svn: 90503
|
| |
|
|
|
|
| |
MemRegion.cpp.
llvm-svn: 90499
|
| |
|
|
|
|
| |
RegionStoreManager::RemoveDeadBindings(): only the VarRegions for variables marked with the '__block' annotation should have their lifetime extended by a BlockDataRegion.
llvm-svn: 90462
|
| |
|
|
|
|
| |
Patch by Lei Zhang!
llvm-svn: 90444
|
| |
|
|
| |
llvm-svn: 90443
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
that all MemRegions iterated over are VarRegions.
llvm-svn: 90430
|
| |
|
|
| |
llvm-svn: 90424
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 90267
|
| |
|
|
|
|
| |
recursive logic in the methods of ScanReachableSymbols.
llvm-svn: 90245
|
| |
|
|
| |
llvm-svn: 90139
|
| |
|
|
| |
llvm-svn: 90137
|
| |
|
|
| |
llvm-svn: 90086
|
| |
|
|
| |
llvm-svn: 90084
|
| |
|
|
|
|
| |
analyzer over Postgresql.
llvm-svn: 90060
|
| |
|
|
| |
llvm-svn: 90034
|
| |
|
|
| |
llvm-svn: 90032
|
| |
|
|
| |
llvm-svn: 90028
|
| |
|
|
|
|
| |
stack-allocated block. Implements the rest of <rdar://problem/7387385>.
llvm-svn: 89940
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
VarRegion for a "captured" variable should also be considered live.
llvm-svn: 89928
|
| |
|
|
|
|
| |
VarRegions for "captured" variables for a block.
llvm-svn: 89927
|
| |
|
|
|
|
| |
scan a collection of SVals or MemRegions all at once.
llvm-svn: 89926
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 89903
|
| |
|
|
|
|
|
|
|
|
|
| |
'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
|
| |
|
|
|
|
| |
MemRegionManager::getVarRegion().
llvm-svn: 89897
|
| |
|
|
| |
llvm-svn: 89892
|
| |
|
|
| |
llvm-svn: 89890
|
| |
|
|
|
|
| |
extend the functionality of the retain/release checker using the new Checker interface. Pieces of CFRefCount will gradually be migrated to this new class over time.
llvm-svn: 89889
|
| |
|
|
| |
llvm-svn: 89888
|
| |
|
|
|
|
| |
by making it a static function within GRExprEngine.cpp.
llvm-svn: 89884
|
| |
|
|
|
|
| |
manually in AnalysisConsumer.cpp.
llvm-svn: 89883
|
| |
|
|
|
|
|
|
|
| |
only stop processing the checkers after all the nodes for a current
check have been processed. This (I believe) handles the case where
PredSet (the input nodes) contains more than one node due to state
bifurcation. Zhongxing: can you review this?
llvm-svn: 89882
|
| |
|
|
|
|
| |
anytime we pass a tracked object to a block call we stop tracking it.
llvm-svn: 89831
|
| |
|
|
| |
llvm-svn: 89830
|
| |
|
|
| |
llvm-svn: 89829
|
| |
|
|
|
|
| |
precursor to having basic static analysis support for blocks.
llvm-svn: 89828
|
| |
|
|
|
|
| |
got introduced in Mac OS X 10.5 and later, notably return values of double, float, etc., will not be garbage. Fixes <rdar://problem/6829160>.
llvm-svn: 89809
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
initial transition of the nil-receiver checker to the Checker
interface as done in r89745. Some important changes include:
1) We consolidate the BugType object used for nil receiver bug
reports, and don't include the type of the returned value in the
BugType (which would be wrong if a nil receiver bug was reported more
than once)
2) Added a new (temporary) flag to CheckerContext: DoneEvauating.
This is used by GRExprEngine when evaluating message expressions to
not continue evaluating the message expression if this flag is set.
This flag is currently set by the nil receiver checker. This is an
intermediate solution to allow the nil-receiver checker to properly
work as a plug-in outside of GRExprEngine. Basically, this flag
indicates that the entire message expression has been evaluated, not
just a precondition (which is what the nil-receiver checker does).
This flag *should not* be repurposed for general use, but just to pull
more things out of GRExprEngine that already in there as we devise a
better interface in the Checker class.
3) Cleaned up the logic in the nil-receiver checker, making the
control-flow a lot easier to read.
llvm-svn: 89804
|
| |
|
|
| |
llvm-svn: 89751
|
| |
|
|
| |
llvm-svn: 89750
|
| |
|
|
|
|
| |
CallAndMessageChecker.
llvm-svn: 89745
|
| |
|
|
| |
llvm-svn: 89735
|
| |
|
|
| |
llvm-svn: 89734
|