Exemple #1
0
bool AliasClass::subclassData(AliasClass o) const {
  switch (m_stag) {
  case STag::None:
  case STag::Frame:
  case STag::Prop:
  case STag::ElemI:
  case STag::ElemS:
  case STag::MIState:
    return equivData(o);
  case STag::Stack:
    if (m_stack.base != o.m_stack.base) return false;
    return m_stack.offset <= o.m_stack.offset &&
           lowest_offset(m_stack) >= lowest_offset(o.m_stack);
  }
  not_reached();
}
Exemple #2
0
bool AliasClass::subclassData(AliasClass o) const {
  assertx(m_stag == o.m_stag);
  switch (m_stag) {
  case STag::None:
  case STag::Frame:
  case STag::Prop:
  case STag::ElemI:
  case STag::ElemS:
  case STag::MIState:
  case STag::Ref:
    return equivData(o);
  case STag::Stack:
    return m_stack.offset <= o.m_stack.offset &&
           lowest_offset(m_stack) >= lowest_offset(o.m_stack);
  }
  not_reached();
}
Exemple #3
0
bool AliasClass::operator==(AliasClass o) const {
  return m_bits == o.m_bits &&
         m_stag == o.m_stag &&
         equivData(o);
}
Exemple #4
0
bool ALocation::operator<=(ALocation o) const {
  auto const isect = static_cast<rep>(m_bits & o.m_bits);
  if (isect != m_bits)    return false;
  if (m_stag != o.m_stag) return m_bits == BEmpty;
  return equivData(o);
}
Exemple #5
0
bool ALocation::operator==(ALocation o) const {
  return m_bits == o.m_bits &&
         m_stag == o.m_stag &&
         equivData(o);
}