| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
counter.
llvm-svn: 76833
|
| |
|
|
| |
llvm-svn: 76831
|
| |
|
|
| |
llvm-svn: 76814
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Educate GRExprEngine::VisitGraph() about 'PreStmt'.
Mark the constructor of 'PostStmt' to be explicit, preventing implicit
conversions and the selection of the wrong 'generateNode' method in
GRStmtNodeBuilder.
Constify a bunch of arguments, which falls out of the changes to ProgramPoint.
llvm-svn: 76809
|
| |
|
|
|
|
|
|
|
| |
'Checker' interface. An updated test case illustrates that after calling a
function with the 'nonnull' attribute we now register the fact that the passed
pointer must be non-null. This retention of information was not possible with
the previously used GRSimpleAPICheck interface.
llvm-svn: 76797
|
| |
|
|
| |
llvm-svn: 76795
|
| |
|
|
|
|
| |
Add a 'previsit' stage (that dispatches to registered Checkers) when evaluating the effects of CallExprs.
llvm-svn: 76794
|
| |
|
|
| |
llvm-svn: 76792
|
| |
|
|
|
|
| |
BugReporter API. No real functionality change.
llvm-svn: 76760
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instead preferring to use the a region's actual type when creating
symbols and using the QualType passed to Retrieve for implicit
casting. This preprocessor logic is temporary; eventually we will
either remove region casts or keep them.
Temporarily toggle (via preprocessor directives) that SymbolicRegions
with heap storage are not undefined, but instead should be
symbolicated. If we want to model that a SymbolicRegion is
uninitialized, we can explicitly model that by binding UndefinedVal to
that region. It turns out that we want to treat most heap objects as
being defined, not the other way around.
llvm-svn: 76720
|
| |
|
|
|
|
|
|
|
| |
'cast type' of a region to invalidate its binding. This only occurs
when using RegionStoreManager, as it records the cast type. I'm
currently considering removing the notion of a cast type (see
comments in code).
llvm-svn: 76719
|
| |
|
|
|
|
|
| |
poisoning changes to DenseMap. We were using an iterator after it had been
invalidated by an insertion into the DenseMap.
llvm-svn: 76677
|
| |
|
|
|
|
|
|
|
| |
to SValuator::EvalCast. In the process, the StoreManagers now use this new cast
machinery, and the hack in GRExprEngine::EvalBind to handle implicit casts
involving OSAtomicCompareAndSwap and friends has been removed (and replaced with
logic closer to the logic specific to those functions).
llvm-svn: 76641
|
| |
|
|
| |
llvm-svn: 76546
|
| |
|
|
| |
llvm-svn: 76531
|
| |
|
|
| |
llvm-svn: 76530
|
| |
|
|
| |
llvm-svn: 76529
|
| |
|
|
| |
llvm-svn: 76522
|
| |
|
|
|
|
|
|
|
|
| |
-refactor logic for retrieving bindings from VarDecls into
RegionStoreManager::RetrieveVar()
- improve RegionStoreManager::CastRetrievedVal() and SimpleSValuate::EvalCastNL
to better handle casts of values of the same canonical type as well as
casts of LocAsInteger values.
llvm-svn: 76516
|
| |
|
|
|
|
|
|
|
|
| |
Entity can now refer to declarations that are not visible outside the translation unit.
It is a wrapper of a pointer union, it's either a Decl* for declarations that don't
"cross" translation units, or an EntityImpl* which is associated with the specific "visible" Decl.
Included is a test case for handling fields across translation units.
llvm-svn: 76515
|
| |
|
|
|
|
| |
constant.
llvm-svn: 76500
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
pointers.
Enhanced RegionStoreManager::Retrieve() to handle automatic casts when the
loaded value is different from the requested value. This should be refined over
time, but essentially we should always symbolicate locations as locations, and
convert them to non-locations on demand.
These changes now cause 'misc-ps.m' to pass again.
llvm-svn: 76497
|
| |
|
|
|
|
| |
locs and vis versa.
llvm-svn: 76483
|
| |
|
|
| |
llvm-svn: 76481
|
| |
|
|
| |
llvm-svn: 76466
|
| |
|
|
|
|
|
|
| |
where the true or false CFGBlock* for a branch could be NULL. This will handle
the case where we can determine during CFG construction that a branch is
infeasible.
llvm-svn: 76450
|
| |
|
|
| |
llvm-svn: 76381
|
| |
|
|
| |
llvm-svn: 76380
|
| |
|
|
| |
llvm-svn: 76294
|
| |
|
|
|
|
| |
whatever) to a BlockPointerType.
llvm-svn: 76288
|
| |
|
|
|
|
| |
FunctionPointerTypes.
llvm-svn: 76287
|
| |
|
|
|
|
| |
explicitly handle have the possibility to be block-level expressions.
llvm-svn: 76277
|
| |
|
|
| |
llvm-svn: 76262
|
| |
|
|
| |
llvm-svn: 76261
|
| |
|
|
|
|
|
|
| |
is an algorithm that is much easier to understand and slightly more efficient.
Thanks to Mike Stump for our discussions on the CFGBuilder and his comments that
helped prompt this long needed cleanup.
llvm-svn: 76250
|
| |
|
|
| |
llvm-svn: 76205
|
| |
|
|
| |
llvm-svn: 76202
|
| |
|
|
| |
llvm-svn: 76196
|
| |
|
|
|
|
|
|
|
| |
until Doug Gregor's Type smart pointer code lands (or more discussion occurs).
These methods just call the new Type::getAs<XXX> methods, so we still have
reduced implementation redundancy. Having explicit getAsXXXType() methods makes
it easier to set breakpoints in the debugger.
llvm-svn: 76193
|
| |
|
|
| |
llvm-svn: 76180
|
| |
|
|
|
|
| |
more obvious.
llvm-svn: 76167
|
| |
|
|
|
|
| |
a public static method of ASTLocation.
llvm-svn: 76166
|
| |
|
|
|
|
| |
code with the new method.
llvm-svn: 76164
|
| |
|
|
| |
llvm-svn: 76161
|
| |
|
|
|
|
|
|
| |
- add IfStmt visitor.
- print information only when a function has callee. Otherwise its ASTContext
map is NULL.
llvm-svn: 76156
|
| |
|
|
|
|
|
| |
conventions. Also reflowed comments and removed spaces at end of
lines and fixed up 80 col violations.
llvm-svn: 76140
|
| |
|
|
|
|
| |
Type::getAsMemberPointerType(), Type::getAsTagType(), and Type::getAsRecordType() with their Type::getAs<XXX> equivalents.
llvm-svn: 76139
|
| |
|
|
| |
llvm-svn: 76133
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This method is intended to eventually replace the individual
Type::getAsXXXType<> methods.
The motivation behind this change is twofold:
1) Reduce redundant implementations of Type::getAsXXXType() methods. Most of
them are basically copy-and-paste.
2) By centralizing the implementation of the getAs<Type> logic we can more
smoothly move over to Doug Gregor's proposed canonical type smart pointer
scheme.
Along with this patch:
a) Removed 'Type::getAsPointerType()'; now clients use getAs<PointerType>.
b) Removed 'Type::getAsBlockPointerTypE()'; now clients use getAs<BlockPointerType>.
llvm-svn: 76098
|
| |
|
|
| |
llvm-svn: 76092
|