void StatementList::makeIsect(StatementList &a, LocationSet &b) { if (this == &a) { // *this = *this isect b for (auto it = a.begin(); it != a.end();) { assert((*it)->isAssignment()); Assignment *as = static_cast<Assignment *>(*it); if (!b.contains(as->getLeft())) { it = m_list.erase(it); } else { it++; } } } else { // normal assignment clear(); for (Statement *stmt : a) { assert(stmt->isAssignment()); Assignment *as = static_cast<Assignment *>(stmt); if (b.contains(as->getLeft())) { append(as); } } } }
void LocationSetTest::testContains() { LocationSet set; QVERIFY(!set.contains(nullptr)); set.insert(Location::regOf(REG_PENT_ESI)); QVERIFY(set.contains(Location::regOf(REG_PENT_ESI))); QVERIFY(!set.contains(Location::regOf(REG_PENT_EDI))); }