| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
do this by silently wrapping the region with an ElementRegion. This fixes the failures in misc-ps-region-store.m.
llvm-svn: 75679
|
| |
|
|
|
|
|
|
| |
invalidate the region correctly. It uses the cast-to type to invalidate
the region when available. To avoid invalid cast-to type like 'void*' or 'id',
region store now only records non-generic casts of regions.
llvm-svn: 75580
|
| |
|
|
|
|
| |
and implementing operator<< support for llvm::raw_ostream.
llvm-svn: 75560
|
| |
|
|
|
|
| |
convention and style similar to other elements in Clang.
llvm-svn: 75548
|
| |
|
|
|
|
|
| |
MemRegion kinds. This allows the compiler to identify what MemRegions we don't
handle for pointer arithmetic.
llvm-svn: 75326
|
| |
|
|
|
|
|
| |
over the types of MemRegions. This allows the compiler to warn us which regions
are not handled, and also is a little faster.
llvm-svn: 75304
|
| |
|
|
|
|
|
| |
(its superclass). This will allow us to experiment with using the new CastRegion
with BasicStoreManager, and gradually phase out the old implementation.
llvm-svn: 74851
|
| |
|
|
| |
llvm-svn: 74762
|
| |
|
|
| |
llvm-svn: 74751
|
| |
|
|
|
|
|
|
|
| |
ValueManager::getRegionValueSymbolVal() with unguarded calls to
ValueManager::getRegionValueSymbolValOrUnknown(). This changes centralizes the
decision of what values to symbolicate in SymbolManager rather than having it
scatter in RegionStoreManager.
llvm-svn: 74730
|
| |
|
|
|
|
| |
structures passed-by-value as function arguments.
llvm-svn: 74729
|
| |
|
|
|
|
|
| |
directly consulting if a VarDecl is an implicit or actual parameter, a global,
etc.
llvm-svn: 74716
|
| |
|
|
|
|
| |
actual lifetime to their logical lifetime.
llvm-svn: 74665
|
| |
|
|
|
|
|
|
| |
pass misc-ps.m. Currently RegionStore/BasicStore don't do any special reasoning
about clang-style vectors, so we should return UnknownVal (in all cases) when
accessing their values via an array.
llvm-svn: 74660
|
| |
|
|
| |
llvm-svn: 74581
|
| |
|
|
|
|
|
|
|
|
|
| |
unknown for it.
Mark the super region of a live region as live, if the live region is pointed
to by a live pointer variable.
These fixes xfail_regionstore_wine_crash.c.
llvm-svn: 74524
|
| |
|
|
|
|
|
| |
Remove ASTContext parameter from DeclContext's methods. This change cascaded down to other Decl's methods and changes to call sites started "escalating".
Timings using pre-tokenized "cocoa.h" showed only a ~1% increase in time run between and after this commit.
llvm-svn: 74506
|
| |
|
|
|
|
| |
handled by RetrieveArray().
llvm-svn: 74409
|
| |
|
|
| |
llvm-svn: 74407
|
| |
|
|
| |
llvm-svn: 74244
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GRTransferFuncs had the conflated role of both constructing SVals (symbolic
expressions) as well as handling checker-specific logic. Now SValuator has the
role of constructing SVals from expressions and GRTransferFuncs just handles
checker-specific logic. The motivation is by separating these two concepts we
will be able to much more easily create richer constraint-generating logic
without coupling it to the main checker transfer function logic.
We now have one implementation of SValuator: SimpleSValuator.
SimpleSValuator is essentially the SVal-related logic that was in GRSimpleVals
(which is removed in this patch). This includes the logic for EvalBinOp,
EvalCast, etc. Because SValuator has a narrower role than the old
GRTransferFuncs, the interfaces are much simpler, and so is the implementation
of SimpleSValuator compared to GRSimpleVals. I also did a line-by-line review of
SVal-related logic in GRSimpleVals and cleaned it up while moving it over to
SimpleSValuator.
As a consequence of removing GRSimpleVals, there is no longer a
'-checker-simple' option. The '-checker-cfref' did everything that option did
but also ran the retain/release checker. Of course a user may not always wish to
run the retain/release checker, nor do we wish core analysis logic buried in the
checker-specific logic. The next step is to refactor the logic in CFRefCount.cpp
to separate out these pieces into the core analysis engine.
llvm-svn: 74229
|
| |
|
|
| |
llvm-svn: 74168
|
| |
|
|
| |
llvm-svn: 74166
|
| |
|
|
|
|
| |
Revert to setting default value approach for handling struct initialization.
llvm-svn: 74160
|
| |
|
|
| |
llvm-svn: 74136
|
| |
|
|
| |
llvm-svn: 74047
|
| |
|
|
| |
llvm-svn: 74043
|
| |
|
|
|
|
|
|
|
|
| |
- Change implementation of MemRegion::hasStackStorage()/hasHeapStorage() to use
'getMemorySpace()'. This avoids a double traversal up the region hierarchy
and is simpler.
- Add MemRegion::hasHeapOrStackStorage() as a slightly more efficient
alternative to 'hasStackStorage() || hasHeapStorage()'.
llvm-svn: 73977
|
| |
|
|
|
|
| |
MemRegion.
llvm-svn: 73973
|
| |
|
|
| |
llvm-svn: 73954
|
| |
|
|
|
|
| |
Clean up code with ValueManager.
llvm-svn: 73951
|
| |
|
|
|
|
| |
explicitly. Make 0 value with the field type.
llvm-svn: 73949
|
| |
|
|
|
|
| |
array elements to 0 explicitly. Create 0 values with the element type.
llvm-svn: 73946
|
| |
|
|
| |
llvm-svn: 73940
|
| |
|
|
| |
llvm-svn: 73939
|
| |
|
|
| |
llvm-svn: 73880
|
| |
|
|
| |
llvm-svn: 73851
|
| |
|
|
|
|
| |
ElementRegion.
llvm-svn: 73754
|
| |
|
|
|
|
|
|
|
| |
type.
When retrieving the region value, if we are going to create a symbol value, use
the cast-to type if possible.
llvm-svn: 73690
|
| |
|
|
|
|
|
|
|
|
|
|
| |
representation.
Add a type (ObjCObjectPointerType) and remove a type (ObjCQualifiedIdType).
This large/tedious patch is just a first step. Next step is to remove ObjCQualifiedInterfaceType. After that, I will remove the magic TypedefType for 'id' (installed by Sema). This work will enable various simplifications throughout clang (when dealing with ObjC types).
No functionality change.
llvm-svn: 73649
|
| |
|
|
|
|
|
|
| |
GRState object has a direct reference to its GRStateManager, making
the functionality of GRStateRef redunandant. This will lead to some
nice API cleanup and code shrinking across libAnalysis.
llvm-svn: 73644
|
| |
|
|
|
|
|
|
|
|
| |
- Add "sections" to RegionStoreManager.cpp to delineate functionality.
- Add new function "CreateFieldsOnlyRegionStoreManager" that uses the new
RegionStoreFeatures class to use a reduced set of features from
RegionStoreManager (in this case, only field-sensitivity). This isn't
completely hooked up yet.
llvm-svn: 73572
|
| |
|
|
|
|
| |
be unique.
llvm-svn: 73482
|
| |
|
|
|
|
| |
logic.
llvm-svn: 73279
|
| |
|
|
| |
llvm-svn: 73218
|
| |
|
|
|
|
| |
comments for added test case for details.
llvm-svn: 73189
|
| |
|
|
| |
llvm-svn: 73186
|
| |
|
|
| |
llvm-svn: 72166
|
| |
|
|
|
|
|
|
| |
RegionStore needs to know the type of alloca region.
* RegionStoreManager::EvalBinOp() now converts the alloca region to its first
element region, as what is done to symbolic region.
llvm-svn: 72164
|
| |
|
|
| |
llvm-svn: 72013
|