summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/ADT/SmallSetTest.cpp
Commit message (Collapse)AuthorAgeFilesLines
* [ADT] Remove illegal comparison of singular iterators from SmallSetTestFlorian Hahn2018-10-311-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Recommit r334887: [SmallSet] Add SmallSetIterator.Florian Hahn2018-07-241-0/+79
| | | | | | | Updated to make sure we properly construct/destroy SetIter if it has a non-trivial ctors/dtors, like in MSVC. llvm-svn: 337818
* Revert rL337292 due to another MSVC STL problem.Florian Hahn2018-07-171-55/+0
| | | | llvm-svn: 337303
* Recommit r334887: [SmallSet] Add SmallSetIterator.Florian Hahn2018-07-171-0/+55
| | | | | | | Spell out destructor, copy/move constructor and assignment operators for MSVC STL, where set<T>::const_iterator is not trivially copy constructible. llvm-svn: 337292
* Reverted r336805 as it broke llvm-clang-x86_64-expensive-checks-win build botGalina Kistanova2018-07-121-55/+0
| | | | llvm-svn: 336923
* Recommit r334887: [SmallSet] Add SmallSetIterator.Florian Hahn2018-07-111-0/+55
| | | | | | | This version now uses the subset of is_trivially_XXX provided by GCC 4.8 and llvm/Support/type_traits.h llvm-svn: 336805
* Revert r334887, as GCC 4.8 does not have is_trivially_copy_constructible & coFlorian Hahn2018-06-161-55/+0
| | | | llvm-svn: 334889
* [SmallSet] Add SmallSetIterator.Florian Hahn2018-06-161-0/+55
| | | | | | | | | | | | | | | This patch adds a simple const_iterator implementation for SmallSet by delegating to either a SmallVector::const_iterator or std::set::const_iterator, depending on which storage is used by the SmallSet. Reviewers: dblaikie, craig.topper Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D47942 llvm-svn: 334887
* [SmallSet] Add some simple unit tests.Florian Hahn2018-06-081-0/+70
Reviewers: craig.topper, dblaikie Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D47940 llvm-svn: 334321
OpenPOWER on IntegriCloud