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/BasicConstraintManager.cpp b/lib/Analysis/BasicConstraintManager.cpp
index 450c38f..c875691 100644
--- a/lib/Analysis/BasicConstraintManager.cpp
+++ b/lib/Analysis/BasicConstraintManager.cpp
@@ -204,13 +204,12 @@
   case nonloc::SymbolValKind: {
     nonloc::SymbolVal& SV = cast<nonloc::SymbolVal>(Cond);
     SymbolRef sym = SV.getSymbol();
-
+    QualType T =  SymMgr.getType(sym);
+    
     if (Assumption)
-      return AssumeSymNE(St, sym, BasicVals.getValue(0, SymMgr.getType(sym)),
-                         isFeasible);
+      return AssumeSymNE(St, sym, BasicVals.getValue(0, T), isFeasible);
     else
-      return AssumeSymEQ(St, sym, BasicVals.getValue(0, SymMgr.getType(sym)),
-                         isFeasible);
+      return AssumeSymEQ(St, sym, BasicVals.getValue(0, T), isFeasible);
   }
 
   case nonloc::SymIntConstraintValKind: