Lines Matching defs:BindingKey

44 class BindingKey {
55 explicit BindingKey(const SubRegion *r, const SubRegion *Base, Kind k)
62 explicit BindingKey(const MemRegion *r, uint64_t offset, Kind k)
98 static BindingKey Make(const MemRegion *R, Kind k);
100 bool operator<(const BindingKey &X) const {
108 bool operator==(const BindingKey &X) const {
117 BindingKey BindingKey::Make(const MemRegion *R, Kind k) {
120 return BindingKey(cast<SubRegion>(R), cast<SubRegion>(RO.getRegion()), k);
122 return BindingKey(RO.getRegion(), RO.getOffset(), k);
126 static inline raw_ostream &operator<<(raw_ostream &Out, BindingKey K) {
141 void BindingKey::dump() const { llvm::errs() << *this; }
148 typedef llvm::ImmutableMap<BindingKey, SVal> ClusterBindings;
149 typedef llvm::ImmutableMapRef<BindingKey, SVal> ClusterBindingsRef;
150 typedef std::pair<BindingKey, SVal> BindingPair;
198 RegionBindingsRef addBinding(BindingKey K, SVal V) const;
201 BindingKey::Kind k, SVal V) const;
203 const SVal *lookup(BindingKey K) const;
204 const SVal *lookup(const MemRegion *R, BindingKey::Kind k) const;
207 RegionBindingsRef removeBinding(BindingKey K);
210 BindingKey::Kind k);
213 return removeBinding(R, BindingKey::Direct).
214 removeBinding(R, BindingKey::Default);
250 std::pair<const MemRegion *, ImmutableMap<BindingKey, SVal>>;
251 using Binding = std::pair<BindingKey, SVal>;
262 const auto SymbolicBeforeOffset = [&ToString](const BindingKey &L,
263 const BindingKey &R) {
275 const BindingKey &L = LPtr->first;
276 const BindingKey &R = RPtr->first;
329 const SVal *V = lookup(R, BindingKey::Direct);
335 const SVal *V = lookup(R, BindingKey::Default);
339 RegionBindingsRef RegionBindingsRef::addBinding(BindingKey K, SVal V) const {
352 BindingKey::Kind k,
354 return addBinding(BindingKey::Make(R, k), V);
357 const SVal *RegionBindingsRef::lookup(BindingKey K) const {
365 BindingKey::Kind k) const {
366 return lookup(BindingKey::Make(R, k));
369 RegionBindingsRef RegionBindingsRef::removeBinding(BindingKey K) {
382 BindingKey::Kind k){
383 return removeBinding(BindingKey::Make(R, k));
513 B = B.addBinding(BindingKey::Make(R, BindingKey::Default), V);
536 B = B.addBinding(BindingKey::Make(R, BindingKey::Default), V);
868 static void getSymbolicOffsetFields(BindingKey K, FieldVector &Fields) {
883 static bool isCompatibleWithFields(BindingKey K, const FieldVector &Fields) {
905 /// Each binding is a pair whose \c first is the key (a BindingKey) and whose
914 const SubRegion *Top, BindingKey TopKey,
920 TopKey = BindingKey::Make(Top, BindingKey::Default);
938 BindingKey NextKey = StoreEntry.first;
987 BindingKey::Make(Top, BindingKey::Default),
994 BindingKey TopKey = BindingKey::Make(Top, BindingKey::Default);
1008 return B.addBinding(Concrete, BindingKey::Default, UnknownVal());
1018 for (BindingKey Key : llvm::make_first_range(Bindings))
1027 Result = Result.add(BindingKey::Make(Concrete, BindingKey::Default),
1189 B = B.addBinding(baseR, BindingKey::Default, V);
1211 B = B.addBinding(baseR, BindingKey::Default, V);
1279 B = B.addBinding(baseR, BindingKey::Default, V);
1286 B = B.addBinding(baseR, BindingKey::Direct, V);
1324 .addBinding(BindingKey::Make(GS, BindingKey::Default), V);
1538 const SVal *V = B.lookup(R, BindingKey::Direct);
2447 auto KeyKind = isa<nonloc::LazyCompoundVal>(V) ? BindingKey::Default
2448 : BindingKey::Direct;
2449 return NewB.addBinding(BindingKey::Make(R, KeyKind), V);
2476 return B.addBinding(R, BindingKey::Default, V);
2656 return B.addBinding(BindingKey::Make(R, BindingKey::Default), Val.value());
2810 NewB = NewB.addBinding(R, BindingKey::Default,
2823 return removeSubRegionBindings(B, R).addBinding(R, BindingKey::Default, Val);