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
diff --git a/lib/Analysis/SVals.cpp b/lib/Analysis/SVals.cpp
index 6cc5e91..6847764 100644
--- a/lib/Analysis/SVals.cpp
+++ b/lib/Analysis/SVals.cpp
@@ -286,38 +286,14 @@
   return nonloc::CompoundVal(BasicVals.getCompoundValData(T, Vals));
 }
 
-SVal SVal::MakeSymbolValue(SymbolManager& SymMgr, const MemRegion* R, 
-                           QualType T) {
-  if (Loc::IsLocType(T))
-    return Loc::MakeVal(SymMgr.getSymbol(R));
-  else
-    return NonLoc::MakeVal(SymMgr.getSymbol(R));
-}
-
-SVal SVal::GetSymbolValue(SymbolManager& SymMgr, VarDecl* D) {
-
-  QualType T = D->getType();
+SVal SVal::GetRValueSymbolVal(SymbolManager& SymMgr, const MemRegion* R) {
+  SymbolRef sym = SymMgr.getRegionRValueSymbol(R);
+                                
+  if (const TypedRegion* TR = cast<TypedRegion>(R))
+    if (Loc::IsLocType(TR->getRValueType(SymMgr.getContext())))
+      return Loc::MakeVal(sym);
   
-  if (Loc::IsLocType(T))
-    return loc::SymbolVal(SymMgr.getSymbol(D));
-  
-  return nonloc::SymbolVal(SymMgr.getSymbol(D));
-}
-
-SVal SVal::getSymbolValue(SymbolManager& SymMgr, const MemRegion* R,
-                          const llvm::APSInt* Idx, QualType T) {
-  if (Loc::IsLocType(T))
-    return loc::SymbolVal(SymMgr.getElementSymbol(R, Idx));
-  else
-    return nonloc::SymbolVal(SymMgr.getElementSymbol(R, Idx));
-}
-
-SVal SVal::getSymbolValue(SymbolManager& SymMgr, const MemRegion* R,
-                          const FieldDecl* FD, QualType T) {
-  if (Loc::IsLocType(T))
-    return loc::SymbolVal(SymMgr.getFieldSymbol(R, FD));
-  else
-    return nonloc::SymbolVal(SymMgr.getFieldSymbol(R, FD));
+  return NonLoc::MakeVal(sym);
 }
 
 nonloc::LocAsInteger nonloc::LocAsInteger::Make(BasicValueFactory& Vals, Loc V,