| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 89750
|
| |
|
|
|
|
| |
CallAndMessageChecker.
llvm-svn: 89745
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
along the way. Important changes:
1) To generate a sink node, use GenerateSink(); GenerateNode() is for
generating regular transitions. This makes the API clearer and also
allows us to use the 'bool' option to GenerateNode() for a different
purpose.
2) GenerateNode() now automatically adds the generated node to the
destination ExplodedNodeSet (autotransition) unless the client
specifies otherwise with a bool flag. Several checkers did not call
'addTransition()' after calling 'GenerateNode()', causing the
simulation path to be prematurely culled when a non-fail stop bug was
encountered.
3) Add variants of GenerateNode()/GenerateSink() that take neither a
Stmt* or a GRState*; most callers of GenerateNode() just pass in the
same Stmt* as provided when the CheckerContext object is created; we
can just use that the majority of the time. This cleanup also allows
us to potentially coelesce the APIs for evaluating branches and
end-of-paths (which currently directly use builders).
4) addTransition() no longer needs to be called except for a few
cases. We now have a variant of addTransition() that takes a
GRState*; this allows one to propagate the updated state without
caring about generating a new node explicitly. This nicely cleaned up
a bunch of cases that called autoTransition() with a bunch of
conditional logic surround the call (that common logic has now been
swallowed up by addTransition() itself).
llvm-svn: 89707
|
| |
|
|
|
|
| |
in the checker directly. But I don't have a better approach for now.
llvm-svn: 89640
|
| |
|
|
|
|
| |
UndefinedAssignmentChecker. So this check is redundant.
llvm-svn: 89592
|
| |
|
|
|
|
| |
undefined.
llvm-svn: 89591
|
| |
|
|
|
|
| |
also handled undefined receivers in message expressions.
llvm-svn: 89524
|
| |
|
|
|
|
| |
is now handled by UndefinedArgChecker.
llvm-svn: 89519
|
| |
|
|
| |
llvm-svn: 89446
|
| |
|
|
| |
llvm-svn: 89437
|
| |
|
|
| |
llvm-svn: 89383
|
| |
|
|
|
|
| |
end of the path. Need to unify interfaces.
llvm-svn: 89063
|
| |
|
|
| |
llvm-svn: 89060
|
| |
|
|
|
|
|
|
|
|
| |
* Add a load type to GRExprEngine::EvalLoad().
* When retrieve from 'theValue' of OSAtomic funcitions, use the type of the
region instead of the argument expression as the load type.
* Then we can convert CastRetrievedSVal to a pure assertion. In the future
we can let all Retrieve() methods simply return SVal.
llvm-svn: 88888
|
| |
|
|
| |
llvm-svn: 88882
|
| |
|
|
| |
llvm-svn: 88729
|
| |
|
|
| |
llvm-svn: 87092
|
| |
|
|
| |
llvm-svn: 87091
|
| |
|
|
|
|
| |
CallExprs. No clients (yet).
llvm-svn: 86949
|
| |
|
|
|
|
| |
and was easily inlined.
llvm-svn: 86948
|
| |
|
|
|
|
| |
overflow logic in GRExprEngineInternalChecks.cpp.
llvm-svn: 86877
|
| |
|
|
| |
llvm-svn: 86837
|
| |
|
|
| |
llvm-svn: 86836
|
| |
|
|
|
|
|
|
|
|
| |
the old builder API. This percolated a bunch of changes up to the
Checker class (where CheckLocation has been renamed VisitLocation) and
GRExprEngine. ProgramPoint now has the notion of a "LocationCheck"
point (with PreLoad and PreStore respectively), and a bunch of the old
ProgramPoints that are no longer used have been removed.
llvm-svn: 86798
|
| |
|
|
|
|
| |
Patch by Victor Zverovich!
llvm-svn: 86638
|
| |
|
|
| |
llvm-svn: 86595
|
| |
|
|
| |
llvm-svn: 86529
|
| |
|
|
|
|
| |
CheckerVisitor::PreVisitDeclStmt()), and refactor VLASizeChecker to have only one Checker subclass (not two) and to not use the node builders directly (and instead use the newer CheckerContext).
llvm-svn: 86329
|
| |
|
|
|
|
|
|
|
| |
stack variable or a garbage
value into their own respective subclasses of Checker (and put them in .cpp files where their
implementation details are hidden from GRExprEngine).
llvm-svn: 86215
|
| |
|
|
|
|
|
|
| |
an "assign expression", representing the expressions where the value
binding occurs and the assignment takes place respectively. These are
largely syntactic clues for better error reporting.
llvm-svn: 86084
|
| |
|
|
|
|
| |
catching such bugs closer to the source.
llvm-svn: 86003
|
| |
|
|
|
|
| |
VarDecl*, and modify GRExprEngine::EvalBind() to handle decl initialization as well. This paves the way for adding "checker" visitation in EvalBind().
llvm-svn: 85983
|
| |
|
|
|
|
| |
a BugReporter&. This paves the way for pulling some of the retain/release checker into a "Checker" class.
llvm-svn: 85971
|
| |
|
|
|
|
|
|
| |
Split it to two checkers, one for undefined size,
the other for zero size, so that we don't need to query the size
when emitting the bug report.
llvm-svn: 85895
|
| |
|
|
|
|
| |
release] in GC mode
llvm-svn: 85887
|
| |
|
|
|
|
| |
place, so we inlined it in to GRExprEngine::EvalLocation().
llvm-svn: 85838
|
| |
|
|
| |
llvm-svn: 85618
|
| |
|
|
| |
llvm-svn: 85597
|
| |
|
|
|
|
|
| |
can get the correct base lvalue.
Revert r85578.
llvm-svn: 85579
|
| |
|
|
|
|
|
|
| |
GRExprEngine::VisitMemberExpr().
This fixes the crash reported in PR 5316.
llvm-svn: 85578
|
| |
|
|
|
|
|
|
| |
Add a CheckLocation() interface to Checker.
Now ImplicitNullDeref nodes are cached in NullDerefChecker.
More cleanups follow.
llvm-svn: 85471
|
| |
|
|
|
|
|
| |
Switch a few ugly switch-on-string-literal constructs to use the new
llvm::StringSwitch.
llvm-svn: 85461
|
| |
|
|
|
|
|
| |
warnings. Eventually we need a way to import externally defined functions
summaries.
llvm-svn: 85092
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
qualified reference to a declaration that is not a non-static data
member or non-static member function, e.g.,
namespace N { int i; }
int j = N::i;
Instead, extend DeclRefExpr to optionally store the qualifier. Most
clients won't see or care about the difference (since
QualifierDeclRefExpr inherited DeclRefExpr). However, this reduces the
number of top-level expression types that clients need to cope with,
brings the implementation of DeclRefExpr into line with MemberExpr,
and simplifies and unifies our handling of declaration references.
Extended DeclRefExpr to (optionally) store explicitly-specified
template arguments. This occurs when naming a declaration via a
template-id (which will be stored in a TemplateIdRefExpr) that,
following template argument deduction and (possibly) overload
resolution, is replaced with a DeclRefExpr that refers to a template
specialization but maintains the template arguments as written.
llvm-svn: 84962
|
| |
|
|
| |
llvm-svn: 84757
|
| |
|
|
|
|
| |
are updated.
llvm-svn: 84447
|
| |
|
|
|
|
|
|
|
| |
- strcmp -> ==
- OS.write(II->getName() ...) -> OS << II->getNameStr()
- Avoid std::string concatenation
- Use getNameStr().str() when an std::string is really needed.
llvm-svn: 84437
|
| |
|
|
| |
llvm-svn: 84436
|
| |
|
|
| |
llvm-svn: 84073
|
| |
|
|
|
|
| |
* Make all Base value the last argument.
llvm-svn: 84071
|