diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-01-22 18:23:34 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-01-22 18:23:34 +0000 |
commit | 9ab6b9cfb76ee56a61829e2bdb08e5cdc288726e (patch) | |
tree | ce8772d0a73edbd6ce7aa138ee9ccc7b6d1bd738 /lib/Analysis/RegionStore.cpp | |
parent | 07c487e5f73c3e6ea47a03b674a4a0f753adf90f (diff) |
Static analyzer: Remove a bunch of outdated SymbolData objects and
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.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62769 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/RegionStore.cpp')
-rw-r--r-- | lib/Analysis/RegionStore.cpp | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/lib/Analysis/RegionStore.cpp b/lib/Analysis/RegionStore.cpp index 3faae70885..5a13a1dbc2 100644 --- a/lib/Analysis/RegionStore.cpp +++ b/lib/Analysis/RegionStore.cpp @@ -552,8 +552,7 @@ SVal RegionStoreManager::Retrieve(const GRState* St, Loc L, QualType T) { // We treat function parameters as symbolic values. if (const VarRegion* VR = dyn_cast<VarRegion>(R)) if (isa<ParmVarDecl>(VR->getDecl())) - return SVal::MakeSymbolValue(getSymbolManager(), VR, - VR->getRValueType(getContext())); + return SVal::GetRValueSymbolVal(getSymbolManager(), VR); if (MRMgr.onStack(R) || MRMgr.onHeap(R)) { // All stack variables are considered to have undefined values @@ -564,8 +563,7 @@ SVal RegionStoreManager::Retrieve(const GRState* St, Loc L, QualType T) { } // All other values are symbolic. - return SVal::MakeSymbolValue(getSymbolManager(), R, - cast<TypedRegion>(R)->getRValueType(getContext())); + return SVal::GetRValueSymbolVal(getSymbolManager(), R); // FIXME: consider default values for elements and fields. } @@ -603,8 +601,7 @@ SVal RegionStoreManager::RetrieveStruct(const GRState* St,const TypedRegion* R){ if (MRMgr.onStack(FR) || MRMgr.onHeap(FR)) FieldValue = UndefinedVal(); else - FieldValue = SVal::MakeSymbolValue(getSymbolManager(), FR, - FR->getRValueType(getContext())); + FieldValue = SVal::GetRValueSymbolVal(getSymbolManager(), FR); } StructVal = getBasicVals().consVals(FieldValue, StructVal); |