| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 224658
|
|
|
|
| |
llvm-svn: 224064
|
|
|
|
| |
llvm-svn: 221689
|
|
|
|
|
|
| |
exercising some code in vector<bool>. Add more tests in an attempt to get better coverage
llvm-svn: 221644
|
|
|
|
| |
llvm-svn: 221240
|
|
|
|
|
|
|
| |
tests that replace operator new/delete won't link when using ASAN and MSAN
because these sanitizers also replace new/delete.
llvm-svn: 221236
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
An evil user might overload operator comma. Use a void cast to make sure any user overload is not selected.
Modify all the test iterators to define operator comma.
Reviewers: danalbert, mclow.lists
Reviewed By: mclow.lists
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D5929
llvm-svn: 220706
|
|
|
|
| |
llvm-svn: 220154
|
|
|
|
|
|
| |
functionality change
llvm-svn: 220142
|
|
|
|
|
|
|
|
|
| |
Fix vector asan annotations with RAII.
Add a test.
Also, remove one dead function.
Review: http://reviews.llvm.org/D4170
llvm-svn: 216995
|
|
|
|
|
|
| |
thanks to Ion Gaztañaga for noticing this problem w.r.t LWG#526
llvm-svn: 215213
|
|
|
|
|
|
| |
handle list::remove(const value_type &x), if x was an element of the list. Added a test for this, and a fix. Thanks to Ion for the report.
llvm-svn: 215210
|
|
|
|
|
|
| |
tests for list, forward_list, and the std::remove_if algorithm
llvm-svn: 214736
|
|
|
|
|
|
| |
in 32-bit mode because they assumed that std::size_type and make_unsigned<ptrdiff_t>::type were always the same type. No change to libc++, just the tests.
llvm-svn: 212538
|
|
|
|
| |
llvm-svn: 208319
|
|
|
|
|
|
| |
were subtly invalid (didn't compare equal). Thanks to Erik Verbruggen for the report (and diagnosis)
llvm-svn: 208096
|
|
|
|
|
|
| |
iterators and allocator pointers with different const-character. No changes to libc++
llvm-svn: 203479
|
|
|
|
|
|
| |
explicit. Note that libc++ already did this for string/deque/forward_list/list/vector and the unordered containers; implement it for set/multiset/map/multimap. Add tests for all the containers. Two drive-by fixes as well: add a missing explicit in <deque>, and remove a tab that snuck into a container test. This issue is also LLVM bug 15724, and resolves it.
llvm-svn: 202994
|
|
|
|
|
|
| |
the library
llvm-svn: 202885
|
|
|
|
| |
llvm-svn: 201349
|
|
|
|
| |
llvm-svn: 200814
|
|
|
|
|
|
| |
test suite. Moved one to /support, made it a superset, and removed all but one of the others, and iupdated all the includes. Left the odd one (thread/futures/test_allocator.h) for later.
llvm-svn: 196174
|
|
|
|
|
|
| |
Moved one to /support, removed the other, and iupdated all the includes. No functionality change
llvm-svn: 196118
|
|
|
|
| |
llvm-svn: 196058
|
|
|
|
|
|
| |
/support and delete the other. Then adjust all the tests that used them to include the moved one. No functionality change.
llvm-svn: 195785
|
|
|
|
|
|
| |
namespace, since it's not part of C++14, but of an upcoming TS
llvm-svn: 194614
|
|
|
|
|
|
|
|
|
|
|
|
| |
(iterator,
iterator, allocator) constructor with the intention of it being
implicitly converted to the allocator type, it is possible for overload
resolution to favour the (iterator, iterator, enable_if) constructor.
Eliminate this possibility by moving the enable_if to one of the
existing arguments and removing the third argument.
llvm-svn: 191145
|
|
|
|
| |
llvm-svn: 190736
|
|
|
|
|
|
| |
resolution of LWG #2235; no stack allocation pending compiler support
llvm-svn: 190697
|
|
|
|
|
|
| |
tests pass with them. I stumbled across them while experimenting with a std::move that checks its argument for non-const. The third corrects a test that is currently failing.
llvm-svn: 190563
|
|
|
|
| |
llvm-svn: 190283
|
|
|
|
| |
llvm-svn: 190280
|
|
|
|
| |
llvm-svn: 190279
|
|
|
|
| |
llvm-svn: 190251
|
|
|
|
| |
llvm-svn: 189140
|
|
|
|
| |
llvm-svn: 188333
|
|
|
|
|
|
| |
__tree_const_iterator constructor. Fix comment typos in other tests
llvm-svn: 188019
|
|
|
|
| |
llvm-svn: 187910
|
|
|
|
| |
llvm-svn: 187909
|
|
|
|
|
|
| |
http://llvm.org/bugs/show_bug.cgi?id=16816
llvm-svn: 187908
|
|
|
|
| |
llvm-svn: 187906
|
|
|
|
| |
llvm-svn: 187809
|
|
|
|
| |
llvm-svn: 187805
|
|
|
|
| |
llvm-svn: 187740
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. I had been detecting and trapping iterator == and \!= among iterators
in different containers as an error. But the trapping itself is actually
an error.
Consider:
#include <iostream>
#include <vector>
#include <algorithm>
template <class C>
void
display(const C& c)
{
std::cout << "{";
bool first = true;
for (const auto& x : c)
{
if (\!first)
std::cout << ", ";
first = false;
std::cout << x;
}
std::cout << "}\n";
}
int
main()
{
typedef std::vector<int> V;
V v1 = {1, 3, 5};
V v2 = {2, 4, 6};
display(v1);
display(v2);
V::iterator i = std::find(v1.begin(), v1.end(), 1);
V::iterator j = std::find(v2.begin(), v2.end(), 2);
if (*i == *j)
i = j; // perfectly legal
// ...
if (i \!= j) // the only way to check
v2.push_back(*i);
display(v1);
display(v2);
}
It is legal to assign an iterator from one container to another of the
same type. This is required to work. One might want to test whether or
not such an assignment had been made. The way one performs such a check
is using the iterator's ==, \!= operator. This is a logical and necessary
function and does not constitute an error.
2. I had a header circular dependence bug when _LIBCPP_DEBUG2 is defined.
This caused a problem in several of the libc++ tests.
Fixed.
3. There is a serious problem when _LIBCPP_DEBUG2=1 at the moment in that
std::basic_string is inoperable. std::basic_string uses __wrap_iterator
to implement its iterators. __wrap_iterator has been rigged up in debug
mode to support vector. But string hasn't been rigged up yet. This means
that one gets false positives when using std::string in debug mode. I've
upped std::string's priority in www/debug_mode.html.
llvm-svn: 187636
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
unordered_set, however it is not complete yet for unordered_multiset,
unordered_map or unordered_multimap. There has been a lot of work done
for these other three containers, however that work was done just to
keep all of the tests passing.
You can try this out with -D_LIBCPP_DEBUG2. You will have to link to a
libc++.dylib that has been compiled with src/debug.cpp. So far, vector
(but not vector<bool>), list, and unordered_set are treated. I hope to
get the other three unordered containers up fairly quickly now that
unordered_set is done.
The flag _LIBCPP_DEBUG2 will eventually be changed to _LIBCPP_DEBUG, but
not today. This is my second effort at getting debug mode going for
libc++, and I'm not quite yet ready to throw all of the work under the
first attempt away.
The basic design is that all of the debug information is kept in a
central database, instead of in the containers. This has been done as
an attempt to have debug mode and non-debug mode be ABI compatible with
each other. There are some circumstances where if you construct a
container in an environment without debug mode and pass it into debug
mode, the checking will get confused and let you know with a readable
error message. Passing containers the other way: from debug mode out to
a non-debugging mode container should be 100% safe (at least that is the
goal).
llvm-svn: 186991
|
|
|
|
| |
llvm-svn: 186525
|
|
|
|
| |
llvm-svn: 185865
|
|
|
|
| |
llvm-svn: 185093
|
|
|
|
| |
llvm-svn: 184859
|