| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
adding assert
This fix required a few changes:
SimpleSValuator:
- Eagerly replace a symbolic value with its constant value in EvalBinOpNN
when it is constrained to a constant. This allows us to better constant fold
values along a path.
- Handle trivial case of '<', '>' comparison of pointers when the two pointers
are exactly the same.
RegionStoreManager:
llvm-svn: 83358
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
<rdar://problem/6914474> checker doesn't realize that variable might
have been assigned if a pointer to that variable was passed to another
function via a structure
The problem here was the RegionStoreManager::InvalidateRegion didn't
invalidate the bindings of invalidated regions. This required a
rewrite of this method using a worklist.
As part of this fix, changed ValueManager::getConjuredSymbolVal() to
require a 'void*' SymbolTag argument. This tag is used to
differentiate two different symbols created at the same location.
llvm-svn: 82920
|
| |
|
|
|
|
| |
GRExprEngine::VisitDeclRefExpr without 'asLValue' being true).
llvm-svn: 82598
|
| |
|
|
|
|
| |
floats not honored
llvm-svn: 82575
|
| |
|
|
|
|
|
|
|
|
|
| |
Several of the existing methods were identical to their respective
specializations, and so have been removed entirely. Several more 'leaf'
optimizations were introduced.
The getAsFoo() methods which imposed extra conditions, like
getAsObjCInterfacePointerType(), have been left in place.
llvm-svn: 82501
|
| |
|
|
|
|
| |
now down by a 'Checker' and not build into GRExprEngine.
llvm-svn: 82017
|
| |
|
|
|
|
|
|
|
| |
__builtin_offsetof in the static analyzer that __builtin_offsetof is
not guaranteed to return an integer constant. We will need to shore
this up later, but now at least we have correct support for when this
*is* an integer constant.
llvm-svn: 81830
|
| |
|
|
| |
llvm-svn: 81820
|
| |
|
|
| |
llvm-svn: 81590
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
local node information.
llvm-svn: 81433
|