[sanitizer] Add operator== and operator!= for InternalMmapVectorNoCtor

llvm-svn: 331619
This commit is contained in:
Vitaly Buka 2018-05-07 06:14:12 +00:00
parent 2a20955169
commit fac095caba
2 changed files with 36 additions and 0 deletions

View File

@ -528,6 +528,19 @@ class InternalMmapVectorNoCtor {
uptr size_;
};
template <typename T>
bool operator==(const InternalMmapVectorNoCtor<T> &lhs,
const InternalMmapVectorNoCtor<T> &rhs) {
if (lhs.size() != rhs.size()) return false;
return internal_memcmp(lhs.data(), rhs.data(), lhs.size() * sizeof(T)) == 0;
}
template <typename T>
bool operator!=(const InternalMmapVectorNoCtor<T> &lhs,
const InternalMmapVectorNoCtor<T> &rhs) {
return !(lhs == rhs);
}
template<typename T>
class InternalMmapVector : public InternalMmapVectorNoCtor<T> {
public:

View File

@ -107,6 +107,29 @@ TEST(SanitizerCommon, InternalMmapVector) {
CHECK_EQ(0U, empty_vector.size());
}
TEST(SanitizerCommon, InternalMmapVectorEq) {
InternalMmapVector<uptr> vector1;
InternalMmapVector<uptr> vector2;
for (uptr i = 0; i < 100; i++) {
vector1.push_back(i);
vector2.push_back(i);
}
EXPECT_TRUE(vector1 == vector2);
EXPECT_FALSE(vector1 != vector2);
vector1.push_back(1);
EXPECT_FALSE(vector1 == vector2);
EXPECT_TRUE(vector1 != vector2);
vector2.push_back(1);
EXPECT_TRUE(vector1 == vector2);
EXPECT_FALSE(vector1 != vector2);
vector1[55] = 1;
EXPECT_FALSE(vector1 == vector2);
EXPECT_TRUE(vector1 != vector2);
}
void TestThreadInfo(bool main) {
uptr stk_addr = 0;
uptr stk_size = 0;