| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
when creating symbolic values, we distinguish between location and non-location
values. For location values, we create a symbolic region instead of a
loc::SymbolVal.
llvm-svn: 68373
|
| |
|
|
|
|
| |
it. Will discuss offline whether symbolic regions should by typed or typeless.
llvm-svn: 68070
|
| |
|
|
| |
llvm-svn: 68068
|
| |
|
|
|
|
| |
Layer the type information with a TypedViewRegion on top of the SymbolicRegion.
llvm-svn: 68028
|
| |
|
|
| |
llvm-svn: 68024
|
| |
|
|
| |
llvm-svn: 67825
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Zhongxing and I discussed by email.
Main changes:
- Removed SymIntConstraintVal and SymIntConstraint
- Added SymExpr as a parent class to SymbolData, SymSymExpr, SymIntExpr
- Added nonloc::SymExprVal to wrap SymExpr
- SymbolRef is now just a typedef of 'const SymbolData*'
- Bunch of minor code cleanups in how some methods were invoked (no functionality change)
This changes are part of a long-term plan to have full symbolic expression
trees. This will be useful for lazily evaluating complicated expressions.
llvm-svn: 67731
|
| |
|
|
|
|
| |
var region roots.
llvm-svn: 67152
|
| |
|
|
| |
llvm-svn: 66894
|
| |
|
|
|
|
|
|
|
|
| |
is 64-bit. I used his suggestion of doing a direct bitwidth/signedness
conversion of the 'offset' instead of just changing the sign. For more
information, see:
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2009-March/004587.html
llvm-svn: 66892
|
| |
|
|
| |
llvm-svn: 66768
|
| |
|
|
| |
llvm-svn: 66654
|
| |
|
|
| |
llvm-svn: 66649
|
| |
|
|
|
|
|
|
| |
offset may be different that the base. Ultimately we need a better solution for
these issues, but this point-by-point fixes are gradually outlining the scope of
the problem.
llvm-svn: 66638
|
| |
|
|
|
|
| |
pointer.
llvm-svn: 66486
|
| |
|
|
| |
llvm-svn: 66419
|
| |
|
|
| |
llvm-svn: 66418
|
| |
|
|
|
|
| |
Bind() and BindStruct(), but we returned a state with the old store.
llvm-svn: 66409
|
| |
|
|
|
|
| |
'self'.
llvm-svn: 66133
|
| |
|
|
| |
llvm-svn: 65987
|
| |
|
|
|
|
| |
region of a scanned region as well.
llvm-svn: 65981
|
| |
|
|
| |
llvm-svn: 65957
|
| |
|
|
|
|
| |
MemRegions.
llvm-svn: 65919
|
| |
|
|
|
|
| |
for clients of StoreManagers from MemRegions to their subregions.
llvm-svn: 65914
|
| |
|
|
| |
llvm-svn: 65817
|
| |
|
|
|
|
| |
offsets for now.
llvm-svn: 65814
|
| |
|
|
| |
llvm-svn: 65764
|
| |
|
|
|
|
|
|
|
| |
analyzer for array subscript expressions involving bases that are vectors. This
solution is probably a hack: it gets the lvalue of the vector instead of an
rvalue like all other types. This should be reviewed (big FIXME in
GRExprEngine).
llvm-svn: 65366
|
| |
|
|
| |
llvm-svn: 65110
|
| |
|
|
| |
llvm-svn: 65041
|
| |
|
|
|
|
|
| |
that this problem arises from time to time. We should find a fundamental
solution for it.
llvm-svn: 65035
|
| |
|
|
| |
llvm-svn: 63929
|
| |
|
|
|
|
|
|
|
| |
for FieldRegion. This enables us to track more values.
Simplify SymbolicRegion::getRValueType(). We assume the symbol always has
pointer type.
llvm-svn: 63928
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
do the symblic regions associated with them and we need them to be typed.
Current SymbolicRegion::getRValueType() method is very restricting. It may be
modified when we are more clear about what could be the types of symblic
regions.
BasicConstraintManager::Assume() is changed due to that now SymblicRegion is a
subclass of SubRegion.
llvm-svn: 63844
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- NonLoc::MakeVal() would use sizeof(unsigned) (literally) instead of consulting
ASTContext for the size (in bits) of 'int'. While it worked, it was a
conflation of concepts and using ASTContext.IntTy is 100% correct.
- RegionStore::getSizeInElements() no longer assumes that a VarRegion has the
type "ConstantArray", and handles the case when uses use ordinary variables
as if they were arrays.
- Fixed ElementRegion::getRValueType() to just return the rvalue type of its
"array region" in the case the array didn't have ArrayType.
- All of this fixes <rdar://problem/6541136>
llvm-svn: 63347
|
| |
|
|
| |
llvm-svn: 63031
|
| |
|
|
| |
llvm-svn: 62847
|
| |
|
|
| |
llvm-svn: 62846
|
| |
|
|
|
|
| |
AnonTypedRegions. It wasn't really doing the right thing and was crashing on rdar-6442306-1.m. This fix causes all path-sensitive test cases to pass with RegionStore.
llvm-svn: 62816
|
| |
|
|
|
|
| |
references. This causes tests 'ObjCProperties.m' and 'refcnt_naming.m' to now pass with RegionStore.
llvm-svn: 62814
|
| |
|
|
|
|
|
|
| |
is not an ElementRegion (also do some cleanups of its core logic).
This gets array-struct.c to work with RegionStore.
llvm-svn: 62781
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
their associated APIs. We no longer need separate SymbolData objects
for fields, variables, etc. Instead, we now associated symbols with
the "rvalue" of a MemRegion (i.e., the value stored at that region).
Now we only have two kinds of SymbolData objects: SymbolRegionRValue
and SymbolConjured.
This cleanup also makes the distinction between a SymbolicRegion and a
symbolic value that is a location much clearer. A SymbolicRegion
represents a chunk of symbolic memory, while a symbolic location is
just a "pointer" with different possible values. Without any specific
knowledge, a symbolic location resolves (i.e., via a dereference) to a
SymbolicRegion. In the future, when we do better alias reasoning, a
symbolic location can become an alias for another location, thus
merging the constraints on the referred SymbolicRegion with the other
region.
llvm-svn: 62769
|
| |
|
|
| |
llvm-svn: 62727
|
| |
|
|
|
|
| |
called "SymbolReaper". Right now it just consolidates the two and cleans up some client code, but shortly it will be used to enable "lazy computation" of live symbols for use with RegionStore.
llvm-svn: 62722
|
| |
|
|
|
|
| |
Because the RegionStore can reason about values beyond the reasoning power of BasicStore, this patch splits some of the test cases for the retain/release checker to have versions that are handled by RegionStore (more warnings) and BasicStore (less warnings).
llvm-svn: 62667
|
| |
|
|
| |
llvm-svn: 62142
|
| |
|
|
|
|
|
|
| |
- put the killed region in the kill set.
- set its default value to unknown.
- removes all bindings for its subregions.
llvm-svn: 62138
|
| |
|
|
|
|
| |
return 'unknown' on most cases.
llvm-svn: 62129
|
| |
|
|
|
|
| |
functionality change.
llvm-svn: 61888
|
| |
|
|
|
|
| |
regions. This silences a warning when compiling Release-Asserts builds.
llvm-svn: 61818
|