Пример #1
0
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);
}
Пример #2
0
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();
}