ALocBits may_alias_part(const AliasAnalysis& aa, AliasClass acls, folly::Optional<T> proj, AliasClass any, ALocBits pessimistic) { if (proj) { if (auto meta = aa.find(*proj)) { return ALocBits{meta->conflicts}.set(meta->index); } assertx(acls.maybe(any)); return pessimistic; } return acls.maybe(any) ? pessimistic : ALocBits{}; }
ALocBits expand_part(const AliasAnalysis& aa, AliasClass acls, folly::Optional<T> proj, AliasClass any, ALocBits all) { auto ret = ALocBits{}; if (proj) { if (auto const meta = aa.find(*proj)) { return ret.set(meta->index); // A single tracked location. } assertx(acls.maybe(any)); return ret; } return any <= acls ? all : ret; }