StoreRef FlatStoreManager::Bind(Store store, Loc L, SVal val) { const MemRegion *R = cast<loc::MemRegionVal>(L).getRegion(); RegionBindings B = getRegionBindings(store); const BindingVal *V = B.lookup(R); BindingVal BV = BVFactory.getEmptyMap(); if (V) BV = *V; RegionInterval RI = RegionToInterval(R); // FIXME: FlatStore should handle regions with unknown intervals. if (!RI.R) return StoreRef(B.getRoot(), *this); BV = BVFactory.add(BV, RI.I, val); B = RBFactory.add(B, RI.R, BV); return StoreRef(B.getRoot(), *this); }
Store FlatStoreManager::Bind(Store store, Loc L, SVal val) { const MemRegion *R = cast<loc::MemRegionVal>(L).getRegion(); RegionBindings B = getRegionBindings(store); const BindingVal *V = B.lookup(R); BindingVal BV = BVFactory.GetEmptyMap(); if (V) BV = *V; Interval I = RegionToInterval(R); BV = BVFactory.Add(BV, I, val); B = RBFactory.Add(B, R, BV); return B.getRoot(); }