| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 81783
|
| |
|
|
| |
llvm-svn: 81590
|
| |
|
|
| |
llvm-svn: 81588
|
| |
|
|
|
|
|
|
|
|
|
|
| |
to statically type various methods in SValuator/GRState as required either a
defined value or a defined-but-possibly-unknown value. This leads to various
logic cleanups in GRExprEngine, and lets the compiler enforce via type checking
our assumptions about what symbolic values are possibly undefined and what are
not.
Along the way, clean up some of the static analyzer diagnostics regarding the uses of uninitialized values.
llvm-svn: 81579
|
| |
|
|
| |
llvm-svn: 81519
|
| |
|
|
| |
llvm-svn: 81501
|
| |
|
|
|
|
| |
local node information.
llvm-svn: 81433
|
| |
|
|
|
|
|
|
|
|
|
| |
upon entry to a method
Here we implement this as a precondition within GRExprEngine, even though it is
related to how BasicStoreManager and RegionStoreManager model 'self'
differently. Putting this as a high-level precondition is more general, which is
why it isn't in RegionStore.cpp.
llvm-svn: 81378
|
| |
|
|
| |
llvm-svn: 81346
|
| |
|
|
| |
llvm-svn: 81092
|
| |
|
|
| |
llvm-svn: 81066
|
| |
|
|
|
|
| |
ActionGRExprEngine().
llvm-svn: 81064
|
| |
|
|
| |
llvm-svn: 81061
|
| |
|
|
| |
llvm-svn: 80980
|
| |
|
|
| |
llvm-svn: 80979
|
| |
|
|
| |
llvm-svn: 80873
|
| |
|
|
|
|
|
| |
'dyn_cast' instead of 'cast' as the denominator value could be UnknownVal (and
is not guaranteed to be a DefinedVal).
llvm-svn: 80869
|
| |
|
|
| |
llvm-svn: 80865
|
| |
|
|
|
|
|
|
|
| |
Also fix a checker context bug: the Dst set is not always empty initially.
Because in GRExprEngine::CheckerVisit(), *CurrSet is used repeatedly.
So we removed the Dst.empty() condition in ~CheckerContext() when deciding
whether to do autotransision.
llvm-svn: 80786
|
| |
|
|
|
|
| |
Now bad callee is checked as a PreVisit to the CallExpr.
llvm-svn: 80771
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
registerInitialVisitors
in the BugReport.
When all internal bug checking logic are moved to checkers, BuiltinBug will
not reference GRExprEngine, and FlushReports() will be not necessary, since
all bugs are emitted into the equivalent classes immediately.
For now just add a ctor with no arguments.
llvm-svn: 80770
|
| |
|
|
|
|
|
|
|
|
|
| |
motivated from Shark profiles that shows that 'markLive' was very
heavy when using --analyzer-store=region. On my benchmark file, this
reduces the analysis time for --analyzer-store=region from 19.5s to
13.5s and for --analyzer-store=basic from 5.3s to 3.5s. For the
benchmark file, this is a reduction of about 30% analysis time for
both analysis modes (a huge win).
llvm-svn: 80765
|
| |
|
|
|
|
| |
Patch by Geoff Keating!
llvm-svn: 80752
|
| |
|
|
| |
llvm-svn: 80644
|
| |
|
|
|
|
|
|
| |
space within the MemberExpr for the nested-name-specifier and its
source range. We'll do the same thing with explicitly-specified
template arguments, assuming I don't flip-flop again.
llvm-svn: 80642
|
| |
|
|
|
|
|
| |
also be adding explicit template arguments as an additional
"adornment". No functionality change.
llvm-svn: 80628
|
| |
|
|
| |
llvm-svn: 80417
|
| |
|
|
|
|
|
| |
objects that are not automatically garbage collected. This fixes
<rdar://problem/7174400>.
llvm-svn: 80387
|
| |
|
|
|
|
|
|
| |
pointers. Most logic cares first about whether or not a region is
symbolic, and second if represents code. This should fix a series of
silent corner case bugs (as well as simplify a bunch of code).
llvm-svn: 80335
|
| |
|
|
| |
llvm-svn: 80320
|
| |
|
|
|
|
|
|
| |
Were Dropped Successfully
Patch by Geoff Keating!
llvm-svn: 80313
|
| |
|
|
|
|
| |
of its subexpressions resulted in a "bad CFG".
llvm-svn: 80298
|
| |
|
|
| |
llvm-svn: 80294
|
| |
|
|
| |
llvm-svn: 80293
|
| |
|
|
| |
llvm-svn: 80226
|
| |
|
|
|
|
| |
greatly simplifying the logic of the analyzer in many places. We now only distinguish between block-level expressions and subexpressions in Environment::RemoveDeadBindings and GRState pretty-printing.
llvm-svn: 80194
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
name, e.g.,
x->Base::f()
retain the qualifier (and its source range information) in a new
subclass of MemberExpr called CXXQualifiedMemberExpr. Provide
construction, transformation, profiling, printing, etc., for this new
expression type.
When a virtual function is called via a qualified name, don't emit a
virtual call. Instead, call that function directly. Mike, could you
add a CodeGen test for this, too?
llvm-svn: 80167
|
| |
|
|
|
|
| |
values and trying to load/store from arrays. RegionStoreManager already properly handles these cases well; we just need to gracefully not handle this case in BasicStoreManager. This fixes PR 4781.
llvm-svn: 80051
|
| |
|
|
|
|
| |
when using the non-fragile Objective-C ABI. This fixes <rdar://problem/7168531>.
llvm-svn: 80047
|
| |
|
|
|
|
|
| |
implicit cast logic in RegionStoreManager to BasicStoreManager. This involved
moving CastRetriedVal from RegionStoreManager to StoreManager.
llvm-svn: 80026
|
| |
|
|
| |
llvm-svn: 80018
|
| |
|
|
|
|
|
| |
Now AnalysisManager is the only place we can get CodeDecl.
This leads to an API change: GRState::bindExpr() now takes the CFG argument.
llvm-svn: 79980
|
| |
|
|
| |
llvm-svn: 79973
|
| |
|
|
|
|
|
| |
the condition. This eliminates a source of bugs where the client doesn't
correctly reason about undefined or unknown values. This fixes PR 4759.
llvm-svn: 79952
|
| |
|
|
|
|
| |
building the CFG
llvm-svn: 79941
|
| |
|
|
| |
llvm-svn: 79854
|
| |
|
|
| |
llvm-svn: 79824
|
| |
|
|
|
|
|
| |
AnalysisContext should never change. Along the way, propagate some constness
around.
llvm-svn: 79701
|
| |
|
|
| |
llvm-svn: 79700
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SelfRegion represented the object bound to 'self' (when analyzing Objective-C
methods) upon entry to a method. Having this region stored on the side ignores
the current stack frame that we might be analyzing (among other things), and is
a problem for interprocedural analysis.
For RegionStoreManager, the value for SelfRegion is just lazily created.
For BasicStoreManager, the value for SelfRegion is bound eagerly to 'self', but
no explicit tracking of SelfRegion on the side is made.
As part of this change, remove the restriction in BasicStoreManager that we only
track ivars for 'self'. This shouldn't actually change anything in terms of
precision, and simplifies the logic.
llvm-svn: 79694
|