From c8be3e89c6ebfa34e1258568e5c202cd2fdd06a7 Mon Sep 17 00:00:00 2001 From: Florian Hahn Date: Wed, 31 Oct 2018 11:00:48 +0000 Subject: [PATCH] [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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@345712 91177308-0d34-0410-b5e6-96231b3b80d8 --- unittests/ADT/SmallSetTest.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/unittests/ADT/SmallSetTest.cpp b/unittests/ADT/SmallSetTest.cpp index d78a72b38f8..3391a5c83f5 100644 --- a/unittests/ADT/SmallSetTest.cpp +++ b/unittests/ADT/SmallSetTest.cpp @@ -142,8 +142,4 @@ TEST(SmallSetTest, IteratorIncMoveCopy) { auto Iter2 = s1.begin(); Iter = std::move(Iter2); EXPECT_EQ("str 0", *Iter); - - auto Iter3 = s1.end(); - Iter3 = Iter2; - EXPECT_EQ(Iter3, Iter2); } -- 2.11.0