in include/HashedAbstractEnvironment.h [367:387]
AbstractValueKind meet_like_operation(
const MapValue& other,
std::function<void(Domain*, const Domain&)> operation) {
for (const auto& other_binding : other.m_map) {
auto binding = m_map.find(other_binding.first);
if (binding == m_map.end()) {
// The value is Top, we just insert the other value (Top is the identity
// for meet-like operations).
m_map[other_binding.first] = other_binding.second;
} else {
// We compute the meet-like combination of the values.
operation(&binding->second, other_binding.second);
if (binding->second.is_bottom()) {
// If the result is Bottom, the entire environment becomes Bottom.
clear();
return AbstractValueKind::Bottom;
}
}
}
return kind();
}