mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
[ADT] Remove illegal comparison of singular iterators from SmallSetTest
This removes the assertion that a copy of a moved-from SmallSetIterator equals the original, which is illegal due to SmallSetIterator including an instance of a standard `std::set` iterator. C++ [iterator.requirements.general] states that comparing singular iterators has undefined result: > Iterators can also have singular values that are not associated with > any sequence. [...] Results of most expressions are undefined for > singular values; the only exceptions are destroying an iterator that > holds a singular value, the assignment of a non-singular value to an > iterator that holds a singular value, and, for iterators that satisfy > the Cpp17DefaultConstructible requirements, using a value-initialized > iterator as the source of a copy or move operation. This assertion triggers the following error in the GNU C++ Library in debug mode under EXPENSIVE_CHECKS: /usr/include/c++/8.2.1/debug/safe_iterator.h:518: Error: attempt to compare a singular iterator to a singular iterator. Objects involved in the operation: iterator "lhs" @ 0x0x7fff86420670 { state = singular; } iterator "rhs" @ 0x0x7fff86420640 { state = singular; } Patch by Eugene Sharygin. Reviewers: fhahn, dblaikie, chandlerc Reviewed By: fhahn, dblaikie Differential Revision: https://reviews.llvm.org/D53793 llvm-svn: 345712
This commit is contained in:
parent
8d00d20845
commit
75395f6f60
@ -142,8 +142,4 @@ TEST(SmallSetTest, IteratorIncMoveCopy) {
|
|||||||
auto Iter2 = s1.begin();
|
auto Iter2 = s1.begin();
|
||||||
Iter = std::move(Iter2);
|
Iter = std::move(Iter2);
|
||||||
EXPECT_EQ("str 0", *Iter);
|
EXPECT_EQ("str 0", *Iter);
|
||||||
|
|
||||||
auto Iter3 = s1.end();
|
|
||||||
Iter3 = Iter2;
|
|
||||||
EXPECT_EQ(Iter3, Iter2);
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user