| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
libclangGRCore
llvm-svn: 122421
|
|
|
|
| |
llvm-svn: 122420
|
|
|
|
| |
llvm-svn: 120970
|
|
|
|
| |
llvm-svn: 120696
|
|
|
|
|
|
| |
to 'assumeXXX'.
llvm-svn: 120614
|
|
|
|
|
|
| |
'evalXXX'.
llvm-svn: 120609
|
|
|
|
|
|
| |
reflects what the class actually does.
llvm-svn: 120605
|
|
|
|
|
|
|
|
|
|
| |
ImmutableSet/ImmtuableMap/ImmutableList APIs.
Along the way, clean up some method names in
the static analyzer so that they are more
descriptive and/or start with lowercase letters.
llvm-svn: 120071
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The end result is now we eagarly constant-fold symbols in the analyzer that are perfectly constrained
to be a constant value. This allows us to recover some path-sensitivity in some cases by lowering
the required level of reasoning power needed to evaluate some expressions.
The net win from this change is that the false positive in PR 8015 is fixed, and we also
find more idempotent operations bugs.
We do, however, regress with the BugReporterVisitors, which need to be modified to understand
this constant folding (and look past it). This causes some diagnostic regressions in plist-output.m
which will get addressed in a future patch. plist-output.m is now marked XFAIL, while
plist-output-alternate.m now tests that the plist output is working, but with the suboptimal
diagnostics. This second test file will eventually be removed.
llvm-svn: 113477
|
|
|
|
|
|
| |
analyzing loads/stores, we lose the location SVal, which makes it difficult to recover in some cases (e.g., for post diagnostics). This is prep for pending changes to GRExprEngine.
llvm-svn: 112930
|
|
|
|
|
|
|
|
| |
symbol -> constant folding. This isn't used yet, but
is prep for some pending optimizations in GRExprEngine.
llvm-svn: 112929
|
|
|
|
|
|
| |
to the new constants.
llvm-svn: 112047
|
|
|
|
|
|
| |
inline-friendly anymore.
llvm-svn: 111179
|
|
|
|
|
|
| |
inlining now.
llvm-svn: 111113
|
|
|
|
|
|
| |
GRState now.
llvm-svn: 111103
|
|
|
|
| |
llvm-svn: 110784
|
|
|
|
|
|
| |
called for non-region locations.
llvm-svn: 110310
|
|
|
|
| |
llvm-svn: 109218
|
|
|
|
|
|
|
| |
engine of the new translation unit. State marshal is there but no real
work is done. End nodes are passed back.
llvm-svn: 109105
|
|
|
|
|
|
| |
expression equals a certain value, use SValuator::EvalEQ and GRState::Assume to see if it can, must, or must not equal that value.
llvm-svn: 107638
|
|
|
|
|
|
| |
the current statement around everywhere. Preparation for symbolic extents.
llvm-svn: 107422
|
|
|
|
|
|
| |
This requires creating new persistent states due to the nature of GDM.
llvm-svn: 104668
|
|
|
|
| |
llvm-svn: 99731
|
|
|
|
|
|
| |
Instead of setting the ReturnExpr GDM to NULL, remove it.
llvm-svn: 99470
|
|
|
|
|
|
| |
their bindings are not removed.
llvm-svn: 98705
|
|
|
|
|
|
|
|
| |
LocationContext
information in ExplodedNode.
llvm-svn: 97785
|
|
|
|
|
|
|
|
|
|
| |
we now may have identical states with different analysis context.
Set the right AnalysisContext in state when entering and leaving a callee.
With both of the above changes, we can pass the test case.
llvm-svn: 97724
|
|
|
|
| |
llvm-svn: 95545
|
|
|
|
|
|
| |
GRState::getSVal(MemRegion*) => Load().
llvm-svn: 95541
|
|
|
|
| |
llvm-svn: 95365
|
|
|
|
| |
llvm-svn: 95362
|
|
(1) libAnalysis is a generic analysis library that can be used by
Sema. It defines the CFG, basic dataflow analysis primitives, and
inexpensive flow-sensitive analyses (e.g. LiveVariables).
(2) libChecker contains the guts of the static analyzer, incuding the
path-sensitive analysis engine and domain-specific checks.
Now any clients that want to use the frontend to build their own tools
don't need to link in the entire static analyzer.
This change exposes various obvious cleanups that can be made to the
layout of files and headers in libChecker. More changes pending. :)
This change also exposed a layering violation between AnalysisContext
and MemRegion. BlockInvocationContext shouldn't explicitly know about
BlockDataRegions. For now I've removed the BlockDataRegion* from
BlockInvocationContext (removing context-sensitivity; although this
wasn't used yet). We need to have a better way to extend
BlockInvocationContext (and any LocationContext) to add
context-sensitivty.
llvm-svn: 94406
|