Allow offsets to be negative. Out-of-bound cases are checked elsewhere. We 
shouldn't put restrictions in store manager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110106 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Checker/FlatStore.cpp b/lib/Checker/FlatStore.cpp
index e1683e5..9e7aa75 100644
--- a/lib/Checker/FlatStore.cpp
+++ b/lib/Checker/FlatStore.cpp
@@ -78,7 +78,7 @@
   public:
     const MemRegion *R;
     Interval I;
-    RegionInterval(const MemRegion *r, uint64_t s, uint64_t e) : R(r), I(s, e){}
+    RegionInterval(const MemRegion *r, int64_t s, int64_t e) : R(r), I(s, e){}
   };
 
   RegionInterval RegionToInterval(const MemRegion *R);
@@ -186,7 +186,7 @@
   switch (R->getKind()) {
   case MemRegion::VarRegionKind: {
     QualType T = cast<VarRegion>(R)->getValueType(Ctx);
-    uint64_t Size = Ctx.getTypeSize(T);
+    int64_t Size = Ctx.getTypeSize(T);
     return RegionInterval(R, 0, Size-1);
   }
 
@@ -197,8 +197,8 @@
     // with symbolic offsets.
     if (!Offset.getRegion())
       return RegionInterval(0, 0, 0);
-    uint64_t Start = Offset.getOffset();
-    uint64_t Size = Ctx.getTypeSize(cast<TypedRegion>(R)->getValueType(Ctx));
+    int64_t Start = Offset.getOffset();
+    int64_t Size = Ctx.getTypeSize(cast<TypedRegion>(R)->getValueType(Ctx));
     return RegionInterval(Offset.getRegion(), Start, Start+Size);
   }