Commit Graph

812 Commits

Author SHA1 Message Date
Marshall Clow
2472b928d2 N3644 tests for map/multimap/set/multiset. Drive-by NOEXCEPT for __tree_const_iterator constructor. Fix comment typos in other tests
llvm-svn: 188019
2013-08-08 21:52:50 +00:00
Marshall Clow
2c1a894061 N3644 support for <unordered_set> and <unordered_map>
llvm-svn: 187915
2013-08-07 21:30:44 +00:00
Marshall Clow
798061ded6 N3644 support for vector<bool>
llvm-svn: 187910
2013-08-07 20:53:38 +00:00
Marshall Clow
07186a7d2d N3644 support for <string> and <vector>
llvm-svn: 187909
2013-08-07 20:48:48 +00:00
Howard Hinnant
303e27d8ce Correct logic bug in find optimization for vector<bool>. This fixes http://llvm.org/bugs/show_bug.cgi?id=16816
llvm-svn: 187908
2013-08-07 20:42:16 +00:00
Howard Hinnant
d098713aaf War on tabs
llvm-svn: 187906
2013-08-07 19:39:48 +00:00
Howard Hinnant
c5582b57c6 Rename time.duration.literals step 3
llvm-svn: 187905
2013-08-07 19:39:11 +00:00
Howard Hinnant
35e09c7ad7 Rename time.duration.literals step 2
llvm-svn: 187904
2013-08-07 19:36:50 +00:00
Howard Hinnant
453ca75d24 Rename time.duration.literals step 1
llvm-svn: 187903
2013-08-07 19:35:46 +00:00
Marshall Clow
e141dc0490 Implement tests for NULL iterators for <array> re: N3644
llvm-svn: 187809
2013-08-06 17:17:13 +00:00
Marshall Clow
8fe0a3722c Implement NULL iterators for <forward_list> and <deque> re: N3644
llvm-svn: 187805
2013-08-06 16:14:36 +00:00
Marshall Clow
0c37cfd8b8 Implement NULL iterators for <list> re: N3644
llvm-svn: 187740
2013-08-05 21:23:28 +00:00
Howard Hinnant
2f51de568f debug mode for unordered_map. Also picked up a missing check and test in unordered_multimap. This wraps up debug mode for the unordered containers.
llvm-svn: 187659
2013-08-02 17:50:49 +00:00
Howard Hinnant
42a3046eef Ok, 3 major changes for debug mode in one commit:
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
2013-08-02 00:26:35 +00:00
Howard Hinnant
0be8f64c44 Nico Rieck: Currently _MSC_VER and _WIN32 are used to guard code which is
MSVC-specific, MSVCRT-specific, or Windows-specific. Because Clang can
also define _MSC_VER, and MSVCRT is not necessarily the only C runtime,
these macros should not be used interchangeably.

This patch divides all Windows-related bits into the aforementioned
categories. Two new macros are introduced:

- _LIBCPP_MSVC: Defined when compiling with MSVC. Detected using
  _MSC_VER, excluding Clang.
- _LIBCPP_MSVCRT: Defined when using the Microsoft CRT. This is the default
   when _WIN32 is defined.

This leaves _WIN32 for code using the Windows API.

This also corrects the spelling of _LIBCP_HAS_IS_BASE_OF to _LIBCPP_HAS_IS_BASE_OF.

Nico, please prepare a patch for CREDITS.TXT, thanks.

llvm-svn: 187593
2013-08-01 18:17:34 +00:00
Howard Hinnant
0f242bea10 Taking another swing at correctly optimizing fill_n.
llvm-svn: 187587
2013-08-01 17:29:28 +00:00
Howard Hinnant
ce075cf1aa Constrain fill_n -> memset operations to include implicit convertibility to unsigned char. This fixes http://llvm.org/bugs/show_bug.cgi?id=16764. Also a drive-by fix on a chrono test suite bug.
llvm-svn: 187552
2013-08-01 00:41:55 +00:00
Marshall Clow
a1cd191624 Implement constexpr (n3302) and fix operator *= and /=
llvm-svn: 187529
2013-07-31 21:02:34 +00:00
Marshall Clow
a1d0d376c8 Implement n3469 - constexpr for chrono
llvm-svn: 187517
2013-07-31 19:32:19 +00:00
Howard Hinnant
4c80bfbd53 Debug mode for unordered_multimap. Some mods were done for unordered_map as well to keep all the tests passing. However unordered_map is at the very least still missing tests, if not functionality (if it isn't tested, it probably isn't working).
llvm-svn: 187446
2013-07-30 21:04:42 +00:00
Howard Hinnant
e5c13decbe Debug mode for unordered_multiset. The exercise spotted a few places I had missed on unordered_set, so I picked those up as well.
There are actually two debug modes:

   1.  -D_LIBCPP_DEBUG2 or -D_LIBCPP_DEBUG2=1
       This is a relatively expensive debug mode, but very thorough.  This is normally what you want to debug with, but may turn O(1) operations into O(N) operations.

   2.  -D_LIBCPP_DEBUG2=0
       This is "debug lite."  Only preconditions that can be checked with O(1) expense are checked.  For example range checking on an indexing operation.  But not iterator validity.

llvm-svn: 187369
2013-07-29 19:05:47 +00:00
Howard Hinnant
aa5aa98eab Add operator new[] to test. Partial fix for valgrind warning in http://llvm.org/bugs/show_bug.cgi?id=16703.
llvm-svn: 187358
2013-07-29 14:43:42 +00:00
Marshall Clow
83c08b4497 Implement N3421; comparison predicates<void>
llvm-svn: 187357
2013-07-29 14:21:53 +00:00
Marshall Clow
7aa54577d1 literal suffixes for std::chrono
llvm-svn: 187078
2013-07-24 21:18:14 +00:00
Howard Hinnant
b24c802489 Debug mode for unordered_set. I believe this to be fairly complete for
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
2013-07-23 22:01:58 +00:00
Marshall Clow
ca0be23b39 Implement string suffixes from N3642
llvm-svn: 186956
2013-07-23 17:05:24 +00:00
Howard Hinnant
7491a16031 Bill Fisher: This patch fixes a bug where std::regex in ECMAScript mode was ignoring capture groups inside lookahead assertions.
For example, matching /(?=(a))(a)/ to "a" should yield two captures: \1 = "a", \2 = "a"

llvm-svn: 186954
2013-07-23 16:18:04 +00:00
Anders Carlsson
8bb1dbbf75 Fix a bug in std::fill_n where memset would end up being called in cases when it shouldn’t.
Reviewed by Howard.

llvm-svn: 186875
2013-07-22 21:08:00 +00:00
Marshall Clow
75eff74803 Make tuple's constructor and std::get<>(tuple) constexpr. Final stage of fixing bug #16599. Thanks to Howard for the review and updates.
llvm-svn: 186834
2013-07-22 16:02:19 +00:00
Marshall Clow
8bf1f08a2c Make std::get constexpr
llvm-svn: 186525
2013-07-17 18:25:36 +00:00
Howard Hinnant
fee09c68a0 Add pointer format test for Windows.
llvm-svn: 186472
2013-07-16 23:50:06 +00:00
Marshall Clow
18191ceb54 Bug 16599 part 2: Make std::pair's constructors and comparison operators (and make_pair) constexpr.
llvm-svn: 186430
2013-07-16 17:45:44 +00:00
Marshall Clow
1c682f0f0c Make std::forward and std::move (and std::move_if_noexcept) constexpr in C++14
llvm-svn: 186344
2013-07-15 20:46:11 +00:00
Howard Hinnant
22161401df Bill Fisher: This patch fixes an ill-formed comparison when parsing control escapes, e.g. "\cA\ca". The code will now throw an error_escape exception for invalid control sequences like "\c:" or "\c".
I've added the test cases to bad_escape.pass.cpp.

llvm-svn: 186335
2013-07-15 18:21:11 +00:00
Howard Hinnant
10f8387b94 A few fixes to tests for Windows port.
llvm-svn: 186334
2013-07-15 18:09:11 +00:00
Marshall Clow
e99520c72e Implement n3584 - Addressing Tuples by Type
llvm-svn: 186237
2013-07-13 02:54:05 +00:00
Howard Hinnant
6d8a38c537 Port make_[un]signed tests to platforms where sizeof(wchar_t) == 2.
llvm-svn: 186136
2013-07-11 23:51:05 +00:00
Howard Hinnant
c815a4e297 Bill Fisher: This patch fixes a less likely case where '\b' can back up into invalid memory, when driven by a regex_iterator (for case 1, see r185273 or http://llvm.org/bugs/show_bug.cgi?id=16240)
The attached test program also supplies a test for the case 1 fix in r185273.

llvm-svn: 186089
2013-07-11 15:32:55 +00:00
Marshall Clow
48c9fe29b2 Improved tests (and fixed a bug in the tests); thanks to Richard Smith for the suggestion
llvm-svn: 186022
2013-07-10 18:01:34 +00:00
Howard Hinnant
dbdeb153d8 Bill Fisher: This patch fixes a bug where regex_iterator doesn't indicate when it's restarting in the middle of a string. This bug causes /^a/ to match in the middle of the string "aaaaaaa", during iteration.
My patch uses  to communicate when  is false.

llvm-svn: 185950
2013-07-09 17:29:09 +00:00
Howard Hinnant
e0fe3d2e96 War on tabs.
llvm-svn: 185865
2013-07-08 21:06:38 +00:00
Marshall Clow
a7b0e5ddf8 Implement n3668 - std::exchange
llvm-svn: 185863
2013-07-08 20:54:40 +00:00
Marshall Clow
f331327c6a Implement n3545 for c++14
llvm-svn: 185856
2013-07-08 20:05:31 +00:00
Howard Hinnant
271426e6ab Windows port for __codecvt_utf8<wchar_t>.
llvm-svn: 185849
2013-07-08 19:03:07 +00:00
Howard Hinnant
5e00063b86 Silence -Wint-to-void-pointer-cast warning in test.
llvm-svn: 185756
2013-07-06 14:41:36 +00:00
Howard Hinnant
abb160e689 Remove implicit conversion from __value_type to value_type in [unordered_][multi]map. This fixes http://llvm.org/bugs/show_bug.cgi?id=16549
llvm-svn: 185711
2013-07-05 18:06:00 +00:00
Howard Hinnant
4a95f9eb7e Removed extension in [unordered_][multi]map which allowed one to emplace using just an argument for the key, as opposed to using piecewise_construct. However a bug report exposed that this created an unfortunate ambiguity. People who are currently using the extension will be notified the next time they compile, and will have to change to using piecewise_construct. There are no ABI issues with the removal of this extension. This fixes http://llvm.org/bugs/show_bug.cgi?id=16542
llvm-svn: 185666
2013-07-04 20:59:16 +00:00
Howard Hinnant
bbdf669bde Simplify comparators of [unordered_][multi]map. This fixes http://llvm.org/bugs/show_bug.cgi?id=16538
llvm-svn: 185665
2013-07-04 19:46:35 +00:00
Joerg Sonnenberger
0644627bef Fix bashism.
llvm-svn: 185646
2013-07-04 15:11:10 +00:00
Marshall Clow
5b2ef2b1a6 Patch for N3655 (Transformation type traits) with Howard's additions
llvm-svn: 185597
2013-07-04 00:10:01 +00:00
Howard Hinnant
3fc9ef22b3 Constrain launch ~ operator to defined bits.
llvm-svn: 185452
2013-07-02 18:01:41 +00:00
Howard Hinnant
43bbdd29de Bill Fisher: This patch fixes a bug where the regex parser doesn't advance the pointer after reading the third character of an octal escape (in awk mode).
That is, regex{"\141", awk} results in the regular expression /a1/ instead of just /a/.

llvm-svn: 185449
2013-07-02 17:43:31 +00:00
Howard Hinnant
4a142ec6b0 XFAIL this test on 10.7 and 10.8
llvm-svn: 185391
2013-07-01 22:59:14 +00:00
Marshall Clow
28d8ba5f79 Implement n3656 - make_unique. Thanks to Howard for the review and suggestions.
llvm-svn: 185352
2013-07-01 18:16:03 +00:00
Marshall Clow
d51891063f Implement n3658 - Compile-time integer sequences
llvm-svn: 185343
2013-07-01 16:26:55 +00:00
Howard Hinnant
eecacc0fad In istream::ignore, check the delimeter as an int_type, not as a char_type, so as to correctly handle EOF. This fixes http://llvm.org/bugs/show_bug.cgi?id=16427
llvm-svn: 185298
2013-07-01 00:37:50 +00:00
Howard Hinnant
9dbbf8dece The bind and function functor constructors and assignment operators were overly general and getting confused with the copy constructor and copy assignment operators. Constrained them. This fixes http://llvm.org/bugs/show_bug.cgi?id=16385
llvm-svn: 185297
2013-07-01 00:01:51 +00:00
Howard Hinnant
9bf42533b7 Fix bind by making _is_valid_bind_return more robust. It should return false instead of give a compile time error, always. The problem was down in ____mu_return, the version that handles nested bind objects. This fixes http://llvm.org/bugs/show_bug.cgi?id=16343
llvm-svn: 185289
2013-06-30 19:48:15 +00:00
Howard Hinnant
1836462545 Add operators to make launch a bitmask type. Searched all of the standard, and libc++ to see if this error occurred elsewhere and didn't see any other place. This fixes http://llvm.org/bugs/show_bug.cgi?id=16207
llvm-svn: 185265
2013-06-29 18:38:17 +00:00
Howard Hinnant
3f75953d82 Provide missing '{' in parsing extended quoted characters. This fixes http://llvm.org/bugs/show_bug.cgi?id=16135
llvm-svn: 185211
2013-06-28 20:31:05 +00:00
Howard Hinnant
8d1e822432 William Fisher: A bug in __lookahead::exec causes /(?=^)b/ to match ab. When makes a recursive call to , it passes true for the value of . This causes a beginning-of-line anchor (^) inside a lookahead assertion to match anywhere in the text. This fixes http://llvm.org/bugs/show_bug.cgi?id=11118
llvm-svn: 185196
2013-06-28 19:11:23 +00:00
Howard Hinnant
21246e3314 Bill Fisher: Fix for failing to throw an exception in regex when parsing an invalid escape sequence. This fixes http://llvm.org/bugs/show_bug.cgi?id=16023
llvm-svn: 185192
2013-06-28 18:57:30 +00:00
Howard Hinnant
eec721826c Implement full support for non-pointer pointers in custom allocators for string. This completes the custom pointer support for the entire library.
llvm-svn: 185167
2013-06-28 16:59:19 +00:00
Howard Hinnant
3ec1f00b73 Implement full support for non-pointer pointers in custom allocators for vector.
llvm-svn: 185093
2013-06-27 19:35:32 +00:00
Howard Hinnant
866d4efa7f Implement full support for non-pointer pointers in custom allocators for list.
llvm-svn: 184859
2013-06-25 16:08:47 +00:00
Howard Hinnant
8a27ba8051 Implement full support for non-pointer pointers in custom allocators for forward_list.
llvm-svn: 184759
2013-06-24 17:17:28 +00:00
Howard Hinnant
14e200d14d Implement full support for non-pointer pointers in custom allocators for deque.
llvm-svn: 184673
2013-06-23 21:17:24 +00:00
Howard Hinnant
307f814372 Implement full support for non-pointer types in custom allocators. This is for the unordered containers only. This work still needs to be done on the sequence containers.
llvm-svn: 184635
2013-06-22 15:21:29 +00:00
Howard Hinnant
07d3eccd26 Implement full support for non-pointer types in custom allocators. This is for the associative containers only. This work still needs to be done on the unordered and sequence containers. Fixes http://llvm.org/bugs/show_bug.cgi?id=15978
llvm-svn: 184358
2013-06-19 21:29:40 +00:00
Howard Hinnant
e7b6d544f0 Test case for r183481.
llvm-svn: 183522
2013-06-07 14:24:18 +00:00
Howard Hinnant
849821cffb Fix a couple of bugs in linear_congruential_engine::seed. Regression test added.
llvm-svn: 182421
2013-05-21 21:05:12 +00:00
Howard Hinnant
0125ab809f Remove cv qualifiers from member pointers in the __member_pointer_traits test. This was causing a const-qualified bind result to malfunction. This was a recent regression due to the new use of __member_pointer_traits in restricting the __invokable and __invoke_of tests.
llvm-svn: 181935
2013-05-15 21:49:27 +00:00
David Dean
a9ac518364 XFAIL this test when using the darwin12 system library. Reviewed by Howard
llvm-svn: 181610
2013-05-10 17:25:57 +00:00
Marshall Clow
0b0bbd2f22 Implement n3607: 'equal', 'mismatch', and 'is_permutation'
llvm-svn: 181548
2013-05-09 21:14:23 +00:00
Howard Hinnant
866ed94db1 Constrain __invoke functions more accurately. This fixes http://llvm.org/bugs/show_bug.cgi?id=15861 .
llvm-svn: 181377
2013-05-07 23:40:12 +00:00
Howard Hinnant
6b1455f6f1 Mark some tests with XFAIL for Lion and Mountain Lion.
llvm-svn: 181336
2013-05-07 17:37:19 +00:00
Howard Hinnant
eedfabd96e Expose accidentally removed __compressed_pair constructor taking piecewise_construct_t. This fixes http://llvm.org/bugs/show_bug.cgi?id=15918 .
llvm-svn: 181217
2013-05-06 16:58:36 +00:00
Howard Hinnant
da9ca0b405 Stephan Tolksdorf: fixes the issue in the <atomic> header and adds corresponding tests. I've used macros to fall back to a user-provided default constructor if _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS (though I suspect that there won't be many users defining that macro).
The tests use placement new to check that atomic values get properly zero-initialized. I had to modify the atomic_is_lock_free test, because default initialization of an object of const type 'const A' (aka 'const atomic<int>') requires a user-provided default constructor.

llvm-svn: 180945
2013-05-02 20:18:43 +00:00
Joerg Sonnenberger
087e35ec03 Make it possible to provide special (linker) flags for the thread tests.
Use it to build & link against libpthread on NetBSD for tests iff they
are testing the thread interface.

llvm-svn: 180942
2013-05-02 19:21:36 +00:00
Joerg Sonnenberger
aa05f9eaf3 Add explicit casts to unsigned char before calling ctype functions.
Fixes the value range on platforms with signed char.

llvm-svn: 180940
2013-05-02 19:17:48 +00:00
Howard Hinnant
a2ee3a6e2e İsmail Dönmez: Change to mktemp template to make it compatible with Linux.
llvm-svn: 180267
2013-04-25 16:08:55 +00:00
Howard Hinnant
03ec04f9b5 default_delete needs a static_assert against void types. I had previously thought that sizeof(void) would take care of this. I was wrong.
llvm-svn: 180213
2013-04-24 19:44:26 +00:00
Joerg Sonnenberger
4341ad3500 Avoid bash specific functionality to work with any POSIX shell
implementing $(( )).

llvm-svn: 180139
2013-04-23 19:53:24 +00:00
Howard Hinnant
f8bb3e522d Zero-initialize all mbstate_t in the codecvt tests.
llvm-svn: 180108
2013-04-23 14:09:35 +00:00
Howard Hinnant
20428e94e0 Somehow aligned_union got dropped through the cracks. This adds it. Did a drive-by fix of alignment_of while I was in the neighborhood.
llvm-svn: 180036
2013-04-22 19:37:49 +00:00
Howard Hinnant
ab65a6f560 After years of telling people: 'If you ever find any of my code that self-move-assigns, send me a bug report.' Somebody finally took me up on it. vector::erase(begin(), begin()) does a self-move-assign of every element in the vector, leaving all of those elements in an unspecified state. I checked the other containers for this same bug and did not find it. Added test case.
llvm-svn: 179760
2013-04-18 15:02:57 +00:00
Howard Hinnant
9a20da75ef I believe this finishes up debug mode for list. The testing is a little weak, but I believe all of the functionality is there. Certainly enough for people to checkout and start beating up on.
llvm-svn: 179632
2013-04-16 21:42:36 +00:00
Howard Hinnant
c76d2bda6f addressof misbehaving for type with an implicit conversion operator to char&. This fixes http://llvm.org/bugs/show_bug.cgi?id=15754
llvm-svn: 179608
2013-04-16 17:27:56 +00:00
Howard Hinnant
e7389a6915 Numeric parsing was getting the wrong answer when faced with very long inputs. This fixes both http://llvm.org/bugs/show_bug.cgi?id=15751 and http://llvm.org/bugs/show_bug.cgi?id=15740
llvm-svn: 179556
2013-04-15 20:40:06 +00:00
Howard Hinnant
f3b02b17af Accidentally disallowed explicit tuple conversions when all elements of the tuple can be explicitly converted.
llvm-svn: 179467
2013-04-14 00:01:13 +00:00
Howard Hinnant
40487ca25e Set failbit when strtold sets errno to ERANGE when parsing floating point values.
llvm-svn: 179461
2013-04-13 18:19:25 +00:00
Howard Hinnant
f750923161 Fix bug in __libcpp_db::__iterator_copy. Add debug test for swaping lists.
llvm-svn: 178892
2013-04-05 17:58:52 +00:00
Howard Hinnant
1b81829979 More list debug mode tests.
llvm-svn: 178873
2013-04-05 15:04:10 +00:00
Howard Hinnant
b0e4c9d01b More work on debug mode for list.
llvm-svn: 178819
2013-04-05 00:18:49 +00:00
Howard Hinnant
b13fcad677 Somehow search_n never got tested, so of course it had a bug in it. This fixes http://llvm.org/bugs/show_bug.cgi?id=15667.
llvm-svn: 178764
2013-04-04 15:40:48 +00:00
Howard Hinnant
1347d33451 The move / swap members were not correctly taking all of the possible states of the basic_stringbuf into account. Just rewrote these members. Test included. This fixes http://llvm.org/bugs/show_bug.cgi?id=15659.
llvm-svn: 178690
2013-04-03 20:21:29 +00:00
Howard Hinnant
575e4e3650 Richard Smith: It was pointed out to me off-list that libc++'s non-compiler-builtin
implementation of std::is_polymorphic does this:

template <class _Tp> struct __is_polymorphic1 : public _Tp {};

... and that g++ rejects this if _Tp has an inaccessible virtual destructor
(because __is_polymorphic1<_Tp> would have a deleted virtual destructor
overriding _Tp's non-deleted destructor). Clang was failing to reject this;
I've fixed that in r178563, but that causes libc++'s corresponding test
case to fail with both clang and gcc when using the fallback
implementation. The fallback code also incorrectly rejects final types.

The attached patch fixes the fallback implementation of is_polymorphic; we
now use dynamic_cast's detection of polymorphic class types rather than
trying to determine if adding a virtual function makes the type larger:

  enable_if<sizeof((_Tp*)dynamic_cast<const volatile
void*>(declval<_Tp*>())) != 0, ...>

Two things of note here:
* the (_Tp*) cast is necessary to work around bugs in Clang and g++ where
we otherwise don't instantiate the dynamic_cast (filed as PR15656)
* the 'const volatile' is here to treat is_polymorphic<cv T> as true for a
polymorphic class type T -- my reading of the standard suggests this is
incorrect, but it matches our builtin __is_polymorphic and gcc

llvm-svn: 178576
2013-04-02 21:25:06 +00:00
Howard Hinnant
70e19bd31e Some debug test cases for list.
llvm-svn: 178565
2013-04-02 19:53:32 +00:00
Howard Hinnant
cf1dc8d39e Test case was forming the wrong limits when size_t != unsigned long.
llvm-svn: 178370
2013-03-29 21:22:22 +00:00
Howard Hinnant
84718fde7a The 3rd test in shrink_to_fit.pass.cpp can't possibly pass if exceptions are disabled, so #ifdef'ing out the test.
llvm-svn: 178350
2013-03-29 17:20:04 +00:00
Daniel Dunbar
15eaebea15 Revert r178075, "Tighten up the iterator requirements ...", it breaks LLVM
bootstrap with libc++.

llvm-svn: 178116
2013-03-27 04:10:25 +00:00
Howard Hinnant
5a13d8dcea Tighten up the iterator requirements for the vector member templates. This is especially important for the constructors so that is_constructible<vector<T>, I, I> gives the right answer when T can not be constructed from *I. Test case included for this latter point.
llvm-svn: 178075
2013-03-26 21:40:54 +00:00
Howard Hinnant
cd4a9fd301 Another vector debug mode test, and a static test on Allocator::value_type. This partially addresses http://llvm.org/bugs/show_bug.cgi?id=15576.
llvm-svn: 178064
2013-03-26 19:04:56 +00:00
Howard Hinnant
1d8a5164b4 More vector debug tests.
llvm-svn: 178033
2013-03-26 15:45:56 +00:00
Marshall Clow
a6d24cc19d Fixed race conditions in thread tests; exposed by UBSan
llvm-svn: 178029
2013-03-26 15:28:33 +00:00
Howard Hinnant
ea95898f29 Simply debug mode tests per Dmitri Gribenko's suggestion.
llvm-svn: 178026
2013-03-26 14:28:25 +00:00
Howard Hinnant
d9db9f90fb Need one more swap overload for swapping two lvalue vector<bool>::reference's.
llvm-svn: 178016
2013-03-26 13:48:57 +00:00
Howard Hinnant
ea1bbbd135 Added debug tests for indexing, pop_back and both forms of erase. Added an improved error message for erasing a single element with end().
llvm-svn: 177929
2013-03-25 22:12:26 +00:00
Howard Hinnant
b14037be89 Remove some erroneous code I was using to debug debug mode.
llvm-svn: 177908
2013-03-25 20:46:07 +00:00
Howard Hinnant
2d752fc2f9 Debug mode tests for vector::front and back.
llvm-svn: 177904
2013-03-25 20:31:25 +00:00
Howard Hinnant
35b3b54548 More vector::iterator debug mode tests. Run by adding to OPTIONS -D_LIBCPP_DEBUG2=1.
llvm-svn: 177897
2013-03-25 20:03:19 +00:00
Howard Hinnant
92bd7c0337 Debug mode: learning to crawl. I need to set up some tests that actually test that the debug mode is working, but that won't cause problems when debug mode isn't on. This is my first prototype of such a test. It should call std::terminate() because it's comparing iterators from different containers. And std::terminate() is rigged up to exit normally. If debug mode fails, and doesn't call terminate, then the program asserts. The test is a no-op if _LIBCPP_DEBUG2 is not defined or is defined to be 0.
llvm-svn: 177892
2013-03-25 19:29:35 +00:00
Howard Hinnant
a60ae88db2 Marshall Clow found some divide-by-zero warnings with UBSan in rand's binomial_distribution test. This eliminates the divide-by-zeros and describes in comments the numerical difficulties the test is having. Each of the problematic tests are exploring edge cases of the distribution.
llvm-svn: 177826
2013-03-23 19:29:45 +00:00
Howard Hinnant
65a87ccdbf This is a start at making the libc++ test suite friendlier to the -fnoexceptions flag. Although this is not a complete solution, it does reduce the number of test failures on OS X from 467 to 128 on OS X when -fno-exceptions is enabled, and does not impact the number of failures at all when -fno-exceptions is not enabled. The bulk of this code was donated anonymously.
llvm-svn: 177824
2013-03-23 17:27:16 +00:00
Howard Hinnant
7c5b88b134 Test cleanup with respect to use of deprecated tmpnam function. Also Windows port for these tests to use _tempnam. The bulk of this patch was donated anonymously. I've tested it on OS X and accept responsibility for it. If I've broken anyone's platform by switching from tmpnam to mktemp for the generation of temporary file names, just let me know. Should be easy to fix in test/support/platform_support.h
llvm-svn: 177755
2013-03-22 20:05:40 +00:00
Marshall Clow
761b5cf087 Fix bug in test; found by AddressSanitizer
llvm-svn: 177464
2013-03-20 00:01:48 +00:00
Marshall Clow
1c00ce5070 Fix bug in test; found by AddressSanitizer
llvm-svn: 177355
2013-03-18 23:39:36 +00:00
Marshall Clow
b56e8587af Removed raw references to __APPLE__; now just check to see if it is defined.
llvm-svn: 177297
2013-03-18 17:45:34 +00:00
Marshall Clow
91907cbe82 Removed raw references to _WIN32; now just check to see if it is defined.
llvm-svn: 177291
2013-03-18 17:04:29 +00:00
Howard Hinnant
7e4844b353 Parsing floating point numbers with very long precision was broken, and this patch fixes it. This fixes http://llvm.org/bugs/show_bug.cgi?id=15445.
llvm-svn: 176711
2013-03-08 19:06:24 +00:00
David Chisnall
8b6a4de64a Fix a bug in mutex_try_to_lock. This was previously trying to unlock a mutex that it didn't own, causing an assertion failure in mutex.cpp. The issue was that the unique_lock went out of scope, releasing the lock on m, then m.unlock() was called on an already-unlocked mutex.
This change removes the spurious m.unlock() call.  

If this test was previously passing for anyone with assertions enabled, then they should investigate bugs in their pthread implementation, as pthread_unlock() should not return 0 if the mutex is currently unlocked.

llvm-svn: 175506
2013-02-19 11:28:45 +00:00
Daniel Dunbar
62b943935d [tests] Add support for a link_flags lit parameter.
- This is useful for testing with custom ABI libraries.
 - Patch by Michael van der Westhuizen.

llvm-svn: 174997
2013-02-12 19:28:51 +00:00
Daniel Dunbar
496f1765a2 [tests] Another batch of timeout increases.
llvm-svn: 174902
2013-02-11 21:04:34 +00:00
Daniel Dunbar
ceb47bb06d [tests] Another batch of timeout increases.
llvm-svn: 174726
2013-02-08 18:26:55 +00:00
Daniel Dunbar
76efb57666 [tests] Add back stdc macros I accidentally refactored out.
- Patch by Michael van der Westhuizen:
--
r174404 accidentally removed stdc format, limit and constant macros from the Linux test runner logic.  This small patch re-adds the macros.

Making this change fixes the following tests on Linux:
 - depr/depr.c.headers/inttypes_h.pass.cpp
 - depr/depr.c.headers/stdint_h.pass.cpp
 - input.output/file.streams/c.files/cinttypes.pass.cpp
 - language.support/cstdint/cstdint.syn/cstdint.pass.cpp
--

llvm-svn: 174722
2013-02-08 17:41:28 +00:00
Daniel Dunbar
577e696425 [tests] Increase a bunch of wait limits.
- Basically I just ran the thread tests many many times on a busy machine and
   bumped the timeouts whenever I hit a test failure.

 - This is obviously subpar, but is the best I can do without the tests being
   rewritten to not depend on arbitrary timeouts.

llvm-svn: 174721
2013-02-08 17:41:19 +00:00
Howard Hinnant
584a65befd Give a lot more timing latitude to some of the timing tests. Busy buildbots are hitting the timing limits too often.
llvm-svn: 174539
2013-02-06 20:25:56 +00:00
Daniel Dunbar
05abe9372b [tests] Infer the cxx_under_test (as clang++).
- This is a reasonable default, and makes testing just work with no required
   parameters.

 - Add notes on all of the inferred or default values.

llvm-svn: 174538
2013-02-06 20:24:23 +00:00
Daniel Dunbar
5178942ded [tests] Change test default to run against locally built library.
llvm-svn: 174528
2013-02-06 17:47:08 +00:00
Daniel Dunbar
d2d614cd84 [tests] Enable use_system_lib support on Linux.
- Patch by Michael van der Westhuizen.

llvm-svn: 174527
2013-02-06 17:45:53 +00:00
Daniel Dunbar
434fb1f6d5 [tests] One last batch of XFAILs, for tests using new symbols added to libc++.
- As of this commit, the test suite should now fully pass on both darwin11 and
   darwin12 when testing against either a locally built libc++ or the system libc++.

llvm-svn: 174478
2013-02-06 00:59:06 +00:00
Daniel Dunbar
ba65d61767 [tests] Accept XFAIL arguments that match any part of a feature.
llvm-svn: 174469
2013-02-06 00:04:52 +00:00
Daniel Dunbar
36860df355 [tests] XFAIL some locale tests that don't seem to work on any Darwin.
llvm-svn: 174459
2013-02-05 22:51:20 +00:00
Daniel Dunbar
b6354a0767 [tests] If no explicit target triple is given, try to infer it.
llvm-svn: 174454
2013-02-05 22:28:03 +00:00
Daniel Dunbar
a563f32c6a [tests] Mark another stream input expected failure (with system libc++).
llvm-svn: 174453
2013-02-05 22:21:52 +00:00
Daniel Dunbar
d0f05fb1b7 [tests] Mark another stream input expected failure (with system libc++).
llvm-svn: 174452
2013-02-05 22:10:28 +00:00
Daniel Dunbar
5ce9a5358b [tests] Mark some string.conversions expected failures (with system libc++).
llvm-svn: 174451
2013-02-05 22:10:27 +00:00
Daniel Dunbar
1a7f7bc6bf [tests] XFAIL a few things that require libc (?) support missing on Darwin.
llvm-svn: 174450
2013-02-05 22:10:25 +00:00
Daniel Dunbar
d15f013dc2 [tests] Mark some istream.unformatted expected failures (with system libc++).
llvm-svn: 174444
2013-02-05 21:43:32 +00:00
Daniel Dunbar
582c97defa [tests] Add an available feature that combines the triple and use_system_lib.
- This is so that we can easily write XFAIL markers for tests that are known
    to fail with versions of libc++ as were shipped with a particular triple.

llvm-svn: 174443
2013-02-05 21:43:30 +00:00
Daniel Dunbar
f51f0319bb [tests] Add support for REQUIRES and XFAIL lines in libc++ tests.
- We parse up to the first non-empty non-comment (C++ style) line, otherwise
   the format and semantics match what is used for LLVM/Clang tests.

 - For now, the only interesting thing to test against is a user supplied
   target_triple test parameter.

llvm-svn: 174440
2013-02-05 21:03:25 +00:00
Daniel Dunbar
8495871807 [tests] Add a 'use_system_lib' parameter.
- This controls whether to execute against the locally built library or
   not. The default is currently True which maps to what was already being done
   by default.

 - I'd appreciate it if someone can implement the proper handling of this flag
   on linux, I no longer remember the details of its .so handling.

llvm-svn: 174404
2013-02-05 18:03:49 +00:00
Howard Hinnant
d27745e4fb Make a few tests optimization-proof. These tests were failing under -O3 because the optimizer was eliminating the call to new.
llvm-svn: 172631
2013-01-16 17:56:06 +00:00
Howard Hinnant
980e7e7402 Make <cmath> classification macros work with integral types.
llvm-svn: 172461
2013-01-14 20:56:22 +00:00
Howard Hinnant
1afbabab32 Fix string conversions functions to throw out_of_range properly. Fixes http://llvm.org/bugs/show_bug.cgi?id=14919.
llvm-svn: 172447
2013-01-14 18:59:43 +00:00
Howard Hinnant
3778f27b23 Michael van der Westhuizen: Improve support for testing on Linux. Fixes http://llvm.org/bugs/show_bug.cgi?id=14892.
llvm-svn: 172436
2013-01-14 17:12:54 +00:00
Howard Hinnant
f1e633c154 Michael van der Westhuizen: Patches for Linux. Fixes http://llvm.org/bugs/show_bug.cgi?id=14648.
llvm-svn: 172435
2013-01-14 17:07:27 +00:00
Howard Hinnant
8d9aec8802 Fix exception safety bug in vector::push_back
llvm-svn: 172250
2013-01-11 20:36:59 +00:00
Marshall Clow
4476100a2f Made test output iterators have value_type of 'void'; matches ones in library
llvm-svn: 171980
2013-01-09 17:20:02 +00:00
Marshall Clow
322270842c Move common header files into a 'support' directory; make 'testit' include -I to that directory; rename 'iterators.h' to 'iterator_test.h'; remove hard-coded paths to include files from more than 350 source files
llvm-svn: 171594
2013-01-05 03:21:01 +00:00
Howard Hinnant
114676622f atomic_bool was missing (just a typedef to atomic<bool>).
llvm-svn: 171498
2013-01-04 18:58:50 +00:00
Marshall Clow
f8c2b82337 ...and then there was one. Only one copy of 'iterators.h' in the test tree for libc++
llvm-svn: 171479
2013-01-04 18:24:04 +00:00
Marshall Clow
f941359201 Removed another copy of 'iterators.h' files in libcxx/test
llvm-svn: 171456
2013-01-03 03:57:56 +00:00
Marshall Clow
cf1589f749 Removed several more different 'iterators.h' files in libcxx/test
llvm-svn: 171452
2013-01-03 02:29:29 +00:00
Marshall Clow
9b726d242f Removed 7 (of 8) different 'iterators.h' files in test/localization
llvm-svn: 171443
2013-01-03 01:45:09 +00:00
Howard Hinnant
861f006d3f Klaas de Vries: Fix bug in libc++'s std::string::find_first_not_of.
llvm-svn: 171321
2012-12-31 20:09:48 +00:00
Howard Hinnant
d15de653f0 Test case for http://llvm.org/bugs/show_bug.cgi?id=14670.
llvm-svn: 170706
2012-12-20 16:50:07 +00:00
Marshall Clow
36a60721ce Added static_assert to std::get<N>(std::array) calls to catch "out of bounds" calls
llvm-svn: 170435
2012-12-18 16:46:30 +00:00
Howard Hinnant
16694b5df5 Zhang Xiongpang: Add definitions for const data members. Fixes http://llvm.org/bugs/show_bug.cgi?id=14585.
llvm-svn: 170026
2012-12-12 21:14:28 +00:00
Howard Hinnant
9f4328b173 Modify testit to use the local headers and lib. Thanks go to Jeffrey Yasskin.
llvm-svn: 169686
2012-12-09 00:12:14 +00:00
Daniel Dunbar
7c4b853e74 tests/lit: Change test default parameters to assume local build.
- Also, support overriding them with lit parameters.

llvm-svn: 168749
2012-11-27 23:56:28 +00:00
Howard Hinnant
c43826f003 Add overflow check to tanh(complex) and reduce to finite answer. Fixes http://llvm.org/bugs/show_bug.cgi?id=13874
llvm-svn: 164266
2012-09-19 23:51:47 +00:00
Howard Hinnant
c51171e0e9 Loosen up the timing requirements on 4 more tests.
llvm-svn: 161289
2012-08-04 00:47:42 +00:00
Howard Hinnant
fb2f0a5e01 Andrew Morrow: There are two tests under test/utilities/memory that heap allocate two
integers which remain unused and are subsequently leaked, so the test
fail when run under valgrind. Unless I'm overlooking a subtle reason
why they are needed I think they can be removed, allowing these tests
to pass under valgrind. The attached patch removes the variables. If
there is a reason for them to exist, I can change this to just delete
them at the end of the test.

llvm-svn: 161195
2012-08-02 18:39:48 +00:00
Howard Hinnant
c1a45fb70f Andrew Morrow: The attached patch updates the lit.config for libc++ unit tests so
that the valgrind configuration passed to lit.py is used to run .pass
tests.

llvm-svn: 161193
2012-08-02 18:36:47 +00:00
Howard Hinnant
a30af5f7cd Andrew Morrow: This patch fixes
test/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/pointer.pass.cpp
to accept '(nil)' as a valid representation for NULL so that the test
passes on Linux. The same thing is already done in some other tests,
like in /test/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_pointer.pass.cpp.

llvm-svn: 161188
2012-08-02 18:12:06 +00:00
Howard Hinnant
d77851e837 Implement [util.smartptr.shared.atomic]. This is the last unimplemented
section in libc++.  This requires a recompiled dylib.  Failure to rebuild
the dylib will result in a link-time error if and only if the functions from
[util.smartptr.shared.atomic] are used.

The implementation is not lock free.  After considerable thought, I know of no
way to make the implementation lock free.  Ideas welcome along that front.  But
changing the ABI of shared_ptr is not on the table at this point.

The mutex used to lock these function is encapsulated by std::__sp_mut.  The
only thing the client knows about std::__sp_mut is that it has a void* data
member, can't be constructed, and has lock and unlock members.  Within the
binary __sp_mut is currently implemented as a pointer to a std::mutex.  That can
change in the future without disturbing the ABI (as long as sizeof(__sp_mut)
remains constant.

I specifically did not make __sp_mut a spin lock as I have a pathological
distrust of spin locks.  Testing on OS X reveals that the use of std::mutex in
this role is not a large performance penalty as long as the contention for the
mutex is low (more likely to get the lock than to have to wait).  In the future
we can still make __sp_mut a spin lock if that is what is desired (without ABI
damage).

The dylib contains 16 __sp_mut's to be chosen based on the hash of the address
of the shared_ptr.  The constant 16 is a ball-park reasonable space/time
tradeoff.

std::hash<T*> was changed to call __murmur2_or_cityhash, instead of the identity
function.  I had thought we had already done this, but I was mistaken.

All of this is under #if __has_feature(cxx_atomic) even though the
implementation is not lock free, because the signatures require access to
std::memory_order, which is currently available only under
__has_feature(cxx_atomic).

llvm-svn: 160940
2012-07-30 01:40:57 +00:00
Howard Hinnant
a1d07d57a7 <algorithm> no longer needs to include <cstdlib>, but can get away with just <cstddef>. This was brought to my attention by Salvatore Benedetto in his port to a bare-metal coretex-m3. This exposed two test bugs where an explicit #include <cstdlib> was needed.
llvm-svn: 160786
2012-07-26 17:09:09 +00:00
Howard Hinnant
02e610ef34 noexcept and constexpr applied to <mutex>.
llvm-svn: 160604
2012-07-21 16:13:09 +00:00
Howard Hinnant
5d926bf1b8 noexcept and constexpr applied to <ios>.
llvm-svn: 160593
2012-07-21 01:03:40 +00:00
Howard Hinnant
f4e11de8e8 constexpr applied to <complex>.
llvm-svn: 160585
2012-07-20 22:18:27 +00:00
Howard Hinnant
11ac39722c Relax the tolerances on some timing tests.
llvm-svn: 160566
2012-07-20 19:48:05 +00:00
Howard Hinnant
8e882dcb2e noexcept applied to <iterator>.
llvm-svn: 160565
2012-07-20 19:36:34 +00:00
Howard Hinnant
397717b7c8 constexpr applied to <array>.
llvm-svn: 160564
2012-07-20 19:20:49 +00:00
Howard Hinnant
403845ba75 Relax the complete-type checks that are happening under __invokable<Fp, Args...> to only check Fp, and not Args... . This should be sufficient to give the desired high quality diagnostics under both bind and function. And this allows a test reported by Rich E on cfe-dev to pass. Tracked by <rdar://problem/11880602>.
llvm-svn: 160285
2012-07-16 16:17:34 +00:00
Howard Hinnant
c033115394 Applied constexpr to <chrono>.
llvm-svn: 160184
2012-07-13 19:17:27 +00:00
Howard Hinnant
9146984e73 Fixed a bug in wstring_convert concerning zero-length inputs. Thanks to Jonathan Coxhead for reporting this bug.
llvm-svn: 160136
2012-07-12 18:07:41 +00:00
Howard Hinnant
38b99b025c Add test for self-referencing emplace test.
llvm-svn: 159921
2012-07-09 02:47:43 +00:00
Howard Hinnant
eeac9fcfb7 Apply constexpr to <bitset>.
llvm-svn: 159899
2012-07-07 17:04:52 +00:00
Howard Hinnant
a62ebe043e Give tuple a constexpr default constructor.
llvm-svn: 159857
2012-07-06 20:39:45 +00:00
Howard Hinnant
227001d12e Add noexcept test for offsetof macro per [support.types]/p4.
llvm-svn: 159846
2012-07-06 18:39:01 +00:00
Howard Hinnant
4cb38a82a2 This commit establishes a new bucket_count policy in the unordered containers: The policy now allows a power-of-2 number of buckets to be requested (and that request honored) by the client. And if the number of buckets is set to a power of 2, then the constraint of the hash to the number of buckets uses & instead of %. If the client does not specify a number of buckets, then the policy remains unchanged: a prime number of buckets is selected. The growth policy is that the number of buckets is roughly doubled when needed. While growing, either the prime, or the power-of-2 strategy will be preserved. There is a small run time cost for putting in this switch. For very cheap hash functions, e.g. identity for int, the cost can be as high as 18%. However with more typical use cases, e.g. strings, the cost is in the noise level. I've measured cases with very cheap hash functions (int) that using a power-of-2 number of buckets can make look up about twice as fast. However I've also noted that a power-of-2 number of buckets is more susceptible to accidental catastrophic collisions. Though I've also noted that accidental catastrophic collisions are also possible when using a prime number of buckets (but seems far less likely). In short, this patch adds an extra tuning knob for those clients trying to get the last bit of performance squeezed out of their hash containers. Casual users of the hash containers will not notice the introduction of this tuning knob. Those clients who swear by power-of-2 hash containers can now opt-in to that strategy. Clients who prefer a prime number of buckets can continue as they have.
llvm-svn: 159836
2012-07-06 17:31:14 +00:00
Howard Hinnant
0bc272cf9a Fix a few testsuite bugs involving trailing null (or lack thereof) in strstream.
llvm-svn: 157832
2012-06-01 20:02:59 +00:00
Howard Hinnant
8b805c915a The rules for emplace in map, multimap, unordered_map and unordered_multimap changed a while back and I'm just now updating to these new rules. In a nutshell, you've got to know you're emplacing to a pair and use one of pair's constructors. I made one extension: If you want to emplace the key and default construct the mapped_type, you can just emplace(key), as opposed to emplace(piecewise_construct, forward_as_tuple(key), forward_as_tuple()).
llvm-svn: 157503
2012-05-25 22:04:21 +00:00
Richard Smith
99f15d6eb7 libc++: Add some missing #includes to atomics tests. libc++ doesn't need these
at the moment, but they allow these tests to be used to test clang against
libstdc++. Add myself to the credits file, as suggested by Howard.

llvm-svn: 155085
2012-04-19 00:50:47 +00:00
David Chisnall
4fa71de024 Fix the remaining atomic tests, all of which were wrong for the case where a
compare-and-exchange failed (it should update the expected value to the current
value, and the tests were checking that it didn't...).

Results of the atomics part of the test suite on FreeBSD with clang trunk and
the atomic.c from compiler-rt (currently kludged into the test, not installed
properly):

****************************************************
Results for /root/libc++/test/atomics:
using clang version 3.1 (trunk 153415)
Target: x86_64-unknown-freebsd10.0
Thread model: posix
with -std=c++0x -stdlib=libc++ -pthread /tmp/atomic.o  
----------------------------------------------------
sections without tests   : 0
sections with failures   : 0
sections without failures: 14
                       +   ----
total number of sections : 14
----------------------------------------------------
number of tests failed   : 0
number of tests passed   : 52
                       +   ----
total number of tests    : 52
****************************************************

Yay!

llvm-svn: 154095
2012-04-05 13:48:16 +00:00
David Chisnall
ca917f5342 Fix test cases that were trying to make atomic things that are not trivially copyable.
Now all of the test cases compile.  Some of them even run!

llvm-svn: 154094
2012-04-05 13:23:08 +00:00
Howard Hinnant
e386b7b360 Update <random> with constexpr support. Patch contributed by Jonathan Sauer.
llvm-svn: 153896
2012-04-02 21:00:45 +00:00
Howard Hinnant
e8df82fa1a Fix test for default constructor of discrete_distribution. This partially addresses http://llvm.org/bugs/show_bug.cgi?id=12436.
llvm-svn: 153873
2012-04-02 15:00:14 +00:00
Howard Hinnant
0527c6207a I believe tuple is still under development in the standard. Daniel Krugler is/will be making convincing arguments that a modified form of LWG 2051 (currently NAD Future) is easily acheivable and desirable. He has demonstrated that a tuple<T...> where all of the T are implicitly convertible from U... should have a tuple constructor that is also implicit, instead of explicit. This would support the use cases in LWG 2051 while not undermining T... with explicit conversions from U.... This check-in is an experimental implementation of Daniel's work. I believe this work to be mature enough to warrant inclusion into libc++. If anyone sees real-world problems that this check in causes, please let me know and I will revert it, and provide the feedback to the LWG.
llvm-svn: 153855
2012-04-01 23:10:42 +00:00
Howard Hinnant
b2f52bb982 Allow libc++ to be built with CMake from within the LLVM tree. The libc++ part is just some renaming as the variable was already in use, conflicting with something else in the LLVM tree. Contributed by Ruben Van Boxem.
llvm-svn: 153036
2012-03-19 15:40:23 +00:00
David Chisnall
2f4cb4d79d Don't refer to a function that doesn't exist in the quick_exit test.
llvm-svn: 152716
2012-03-14 14:02:15 +00:00
Jeffrey Yasskin
9c95b19f9e Fix moneypunct_byname algorithm to more accurately represent C locales in C++.
llvm-svn: 152501
2012-03-10 18:31:43 +00:00
David Chisnall
66d4573786 Make the failure reporting in testit a bit more useful.
llvm-svn: 151719
2012-02-29 13:00:44 +00:00
Howard Hinnant
26bba442ac update test for explicit bool operator.
llvm-svn: 151461
2012-02-25 21:43:14 +00:00
Howard Hinnant
167d0fbb8a Silence some warnings in a test.
llvm-svn: 151451
2012-02-25 20:04:11 +00:00
Howard Hinnant
8d01935c09 Hook up to the new clang __is_trivially_constructible and __is_trivially_assignable traits. Fixes r10925427 and http://llvm.org/bugs/show_bug.cgi?id=12038.
llvm-svn: 151406
2012-02-24 23:32:26 +00:00
Dave Zarzycki
d9d5b4492b Use Xcode relative compilers when possible
llvm-svn: 151108
2012-02-22 00:20:30 +00:00
Howard Hinnant
67f3964766 Modernize relational operators for shared_ptr and unique_ptr. This includes adding support for nullptr, and using less<T*>. Fixes http://llvm.org/bugs/show_bug.cgi?id=12056.
llvm-svn: 151084
2012-02-21 21:02:58 +00:00
Howard Hinnant
08487f51b7 Relax pointer output test to accept glibc's output. Patch supplied by Jeffrey Yasskin.
llvm-svn: 150927
2012-02-19 14:51:01 +00:00
Howard Hinnant
c7cf23e4bf Exercise rvalue arguements to make_shared for C++11 mode.
llvm-svn: 150887
2012-02-18 20:12:03 +00:00
Howard Hinnant
fa8df7db88 tuple was accidentally lacking a valid copy assignment operator. It went undetected because I had failed to test assigning from a const lvalue. This fixes http://llvm.org/bugs/show_bug.cgi?id=11921
llvm-svn: 150613
2012-02-15 20:13:52 +00:00
Howard Hinnant
6560953383 Do not parse sign if a sign is not the next legal character when parsing floating point from an input stream. Fixes http://llvm.org/bugs/show_bug.cgi?id=11871
llvm-svn: 150609
2012-02-15 19:19:37 +00:00
Howard Hinnant
fac8c8866d Remove quotes from locale name identifier. Credit Edward Meewis.
llvm-svn: 146655
2011-12-15 15:01:38 +00:00
Howard Hinnant
f3d14a65ca Starting using murmur2 when combining multiple size_t's into a single hash, and also for basic_string. Also made hash<thread::id> ever so slighly more portable. I had to tweak one test which is questionable (definitely not portable) anyway.
llvm-svn: 145795
2011-12-05 00:08:45 +00:00
Howard Hinnant
1196716270 unord test fixes by Edward Meewis
llvm-svn: 145707
2011-12-02 21:23:14 +00:00
Howard Hinnant
75689c1018 Fix http://llvm.org/bugs/show_bug.cgi?id=11428. Fix provided by Alberto Ganesh Barbati
llvm-svn: 145698
2011-12-02 19:36:40 +00:00
Howard Hinnant
05e485879c Fix ratio arithmetic with zero
llvm-svn: 143519
2011-11-01 23:13:37 +00:00
Howard Hinnant
1ed7df111b Fix <rdar://problem/10256836> getline of an empty string mistakenly causes failure
llvm-svn: 141506
2011-10-09 15:20:46 +00:00
Howard Hinnant
2a4812fd04 Fix <rdar://problem/10255403> match_results::begin() is off by one
llvm-svn: 141494
2011-10-08 14:36:16 +00:00
Howard Hinnant
33a30f4159 Windows porting work by Ruben Van Boxem
llvm-svn: 141003
2011-10-03 15:23:59 +00:00
Howard Hinnant
20dde1e8fb Updated testit to run on Windows and fresh Windows results by Ruben Van Boxem
llvm-svn: 140950
2011-10-01 15:34:27 +00:00
Howard Hinnant
920b56ca88 Another installment on debug mode. This addresses list. However this should be considered a temporary state. The API of the debug database and how vector and list use it, is unsatisfactory at the moment. It is both inefficient and overly verbose. I wanted to get this functionality checked in though. In the next day or so I'll refactor what is there in an attempt to streamline things.
llvm-svn: 140660
2011-09-27 23:55:03 +00:00
Howard Hinnant
cf50df9d94 Fix test bugs found by David Chisnall
llvm-svn: 140271
2011-09-21 18:33:46 +00:00
David Chisnall
580eccb05a Fix locales used in re tests.
llvm-svn: 140265
2011-09-21 17:38:03 +00:00
David Chisnall
13bddcf1bc Remove undefines in cstdio test. Fix these properly rather than bodging the tests.
llvm-svn: 140264
2011-09-21 17:37:18 +00:00
David Chisnall
ecccb1f868 More +.UTF-8 fixes.
llvm-svn: 140262
2011-09-21 17:35:42 +00:00
Howard Hinnant
b996af1fe7 Fix failure found by David Chisnall
llvm-svn: 140255
2011-09-21 16:42:32 +00:00
David Chisnall
71850c961d More fixes to the tests. Add UTF-8 encoding to all locales that don't specify one. Undefine some stdio.h macros that break the tests.
llvm-svn: 140252
2011-09-21 14:59:10 +00:00
David Chisnall
b25f615c58 Fully-qualify some more locales in the tests...
llvm-svn: 140251
2011-09-21 14:48:49 +00:00
David Chisnall
1d9bdaa24d Don't check STREAMS error numbers on systems that don't implement the obsolete (as described in POSIX2008) XSI STREAMS extension.
llvm-svn: 140248
2011-09-21 12:23:11 +00:00
David Chisnall
8b053d5ec1 More locale cleanups. Fully specify locales in iostream tests.
llvm-svn: 140247
2011-09-21 12:09:17 +00:00
David Chisnall
e36a15db17 Localisation test fixes to make the tests pass on FreeBSD, which does not provide shortened forms of the various locales (e.g. en_US, rather than en_US.UTF-8 / en_US.ISO{whatever}).
Reviewed by Howard Hinnant.

llvm-svn: 140242
2011-09-21 08:19:20 +00:00
Howard Hinnant
0695db06d7 The vector test suite now passes for no-debug, debug-lite and debug-regular
llvm-svn: 139930
2011-09-16 18:41:29 +00:00
Howard Hinnant
00d8c245b2 Reimplemented much of <istream> such that single character extractions do not check to see if this is the last character in the stream and thus never set eofbit. This fixes http://llvm.org/bugs/show_bug.cgi?id=10817 . This fix requires a recompiled libc++.dylib to be fully implemented. The recompiled libc++.dylib is ABI compatible with that shipped on Lion.
llvm-svn: 138961
2011-09-01 21:02:45 +00:00
Howard Hinnant
54976f2619 Fixed PR10574: http://llvm.org/bugs/show_bug.cgi?id=10574
llvm-svn: 137522
2011-08-12 21:56:02 +00:00
Howard Hinnant
09ddc43442 Correct test.
llvm-svn: 135460
2011-07-19 01:07:49 +00:00
Alexis Hunt
2405470f01 Adjust two tests to account for a nasty change in copying behavior
between C++03 and C++0x and its effect on exceptions, and another two to
not test move construction when rvalue references are not available.

llvm-svn: 135445
2011-07-18 23:51:25 +00:00
Alexis Hunt
483cf24547 Make all fstream tests use tmpnam if creating files, rather than
hard-coded names.

llvm-svn: 135444
2011-07-18 23:51:21 +00:00
Alexis Hunt
4c14ed75ee Do a litmus test of using tmpnam to generate safe temporary file names
for the tests that open new data files.

llvm-svn: 135422
2011-07-18 20:46:16 +00:00
Alexis Hunt
397d787642 Given that __underlying_type is now available in clang, implement
std::underlying_type.

llvm-svn: 135410
2011-07-18 18:37:21 +00:00
Alexis Hunt
f3ff971561 Give A an explicitly non-throwing destructor so that B's destructor is
itself non-throwing.  Since nested_exception's destructor is
non-throwing, if B's destructor is not, this causes an error in C++03
mode due to the overriding function having a more lax specification.
This did not occur in C++0x mode as A's destructor was implicitly
non-throwing.

llvm-svn: 135400
2011-07-18 17:07:53 +00:00
Alexis Hunt
bbe2b9dbc4 Fix wchar tests by not assuming that tm is complete and by using the
proper va_list time on non-darwin platforms.

llvm-svn: 135247
2011-07-15 05:44:47 +00:00
Howard Hinnant
11af28bdbd Fixing up some ABI issues
llvm-svn: 134639
2011-07-07 21:03:52 +00:00
Alexis Hunt
dca31a7964 <inttypes.h> does not necessarily include <stdint.h>. Accordingly, do
not test for this.

llvm-svn: 134531
2011-07-06 20:52:28 +00:00
Howard Hinnant
5a33687da0 Correct for new rules regarding implicitly deleted special members. http://llvm.org/bugs/show_bug.cgi?id=10191
llvm-svn: 134248
2011-07-01 19:24:36 +00:00
Howard Hinnant
878e035ea1 test for pair piecewise construction
llvm-svn: 133667
2011-06-22 23:51:19 +00:00
Howard Hinnant
bd0c160078 noexcept for <stack>. This completes noexcept for Chapter 23 [containers].
llvm-svn: 132652
2011-06-04 22:09:19 +00:00
Howard Hinnant
6971d82668 noexcept for <queue>.
llvm-svn: 132650
2011-06-04 21:32:33 +00:00
Howard Hinnant
557da866a3 noexcept for <unordered_set>.
llvm-svn: 132647
2011-06-04 20:18:37 +00:00
Howard Hinnant
3714107ed6 noexcept for <unordered_map>.
llvm-svn: 132646
2011-06-04 18:54:24 +00:00
Howard Hinnant
0e9f71c13f noexcept for <set>. Plus a few fixes to noexcept for <map>.
llvm-svn: 132640
2011-06-04 15:22:34 +00:00
Howard Hinnant
1052ee39cb noexcept for <map>.
llvm-svn: 132639
2011-06-04 14:31:57 +00:00
Howard Hinnant
3297ed7065 noexcept for <vector>. This also includes installing move_if_noexcept() into vector.
llvm-svn: 132577
2011-06-03 19:40:40 +00:00
Howard Hinnant
2d45a18c24 Bring noexcept for <string> inline with other containers.
llvm-svn: 132573
2011-06-03 18:40:47 +00:00
Howard Hinnant
4590010473 noexcept for <list>.
llvm-svn: 132562
2011-06-03 17:30:28 +00:00
Howard Hinnant
91a4750733 noexcept for <forward_list>.
llvm-svn: 132553
2011-06-03 16:20:53 +00:00
Howard Hinnant
801291139c After sleeping on it I've decided that all special members that can be noexcept, should be declared so. The client has the traits to detect and branch on this information, and it is often an important optimization. Give deque() a noexcept. Add test for deque default constructor and deque destructor.
llvm-svn: 132549
2011-06-03 15:16:49 +00:00
Howard Hinnant
60954bbbbc Add noexcept tests for deque.
llvm-svn: 132523
2011-06-03 01:46:22 +00:00
Howard Hinnant
3739fe79e5 noexcept for <memory>. I've added a few extension noexcept to: allocator_traits<A>::deallocate, allocaate<T>::deallocate, return_temporary_buffer, and default_delete<T>::operator()(T*) const. My rationale was: If a std-dicated noexcept function needs to call another std-defined function, that called function must be noexcept. We're all a little new to noexcept, so things like this are to be expected. Also included fix for broken __is_swappable trait pointed out by Marc Glisse, thanks Marc|. And fixed a test case for is_nothrow_destructible. Destructors are now noexcept by default|
llvm-svn: 132261
2011-05-28 14:41:13 +00:00
Howard Hinnant
2344d6c195 Simplied bind using __invoke. In the process, found and fixed a couple of bugs. C++11 only.
llvm-svn: 131667
2011-05-19 19:41:47 +00:00
Howard Hinnant
c2bf9e1851 This commit was accidental. Reverting.
llvm-svn: 131514
2011-05-18 00:47:00 +00:00
Howard Hinnant
781afe1934 A bunch of future tests got invalidated with the latest updates to thread. Fixed the tests.
llvm-svn: 131509
2011-05-17 23:32:48 +00:00
Howard Hinnant
5fdeee5b3a Fix and beef up test bug for move_if_noexcept
llvm-svn: 131483
2011-05-17 20:10:42 +00:00
Howard Hinnant
fe7e3eeddc Clean up a bunch of warnings in the tests, 3 of which actually turned out to be test bugs.
llvm-svn: 131479
2011-05-17 19:12:55 +00:00
Howard Hinnant
872a91167e Brought call_once variadic call up to current spec, which allows move-only functors and move-only arguments, but disallows functors with non-const lvalue reference parameters.
llvm-svn: 131414
2011-05-16 19:05:11 +00:00
Howard Hinnant
8df61ea84d Brought thread variadic constructor up to current spec, which allows move-only functors and move-only arguments, but disallows functors with non-const lvalue reference parameters.
llvm-svn: 131413
2011-05-16 18:40:35 +00:00
Howard Hinnant
15c34d48ba Redesign of result_of to handle reference-qualified member functions
llvm-svn: 131407
2011-05-16 16:17:21 +00:00
Howard Hinnant
af6c26b366 Warning suppression in test.
llvm-svn: 131344
2011-05-14 15:38:08 +00:00
Howard Hinnant
3962348edf Warning suppression in test.
llvm-svn: 131343
2011-05-14 15:36:25 +00:00
Howard Hinnant
6c4c6a8047 Warning suppression in test.
llvm-svn: 131341
2011-05-14 14:53:12 +00:00
Howard Hinnant
c6b9ff1169 Correction to hexfloat hack.
llvm-svn: 131340
2011-05-14 14:33:56 +00:00
Howard Hinnant
e0d67710e9 Fix test bug.
llvm-svn: 131328
2011-05-14 00:07:53 +00:00
Howard Hinnant
fe7cffaf57 Suppress some warings in the tests.
llvm-svn: 131327
2011-05-14 00:04:05 +00:00
Howard Hinnant
a7fa0710cb Suppress some warings in the tests.
llvm-svn: 131326
2011-05-13 23:59:50 +00:00
Howard Hinnant
fb7f07e3bd http://llvm.org/bugs/show_bug.cgi?id=9854. Also created an emulated hexfloat literal for use in some of the tests. <sigh> And cleaned up some harmless but irritating warnings in the tests.
llvm-svn: 131318
2011-05-13 21:52:40 +00:00
Howard Hinnant
467fc38320 A much improved type_traits for C++0x. Not yet done: is_trivially_constructible, is_trivially_assignable and underlying_type.
llvm-svn: 131291
2011-05-13 14:08:16 +00:00
Howard Hinnant
f738497500 Corrected some bugs in both memory and the tests. Preparing for being able to turn on support for alias templates.
llvm-svn: 131199
2011-05-11 20:21:19 +00:00
Howard Hinnant
a23551cad4 Fix bug in Sseq constraints found by Seth Cantrell
llvm-svn: 129285
2011-04-11 18:22:12 +00:00
Howard Hinnant
e4b11156d7 Corrected tests for http://llvm.org/bugs/show_bug.cgi?id=9351
llvm-svn: 128807
2011-04-04 01:42:30 +00:00
Howard Hinnant
e4bafbee25 ... And these wonderful tests.
llvm-svn: 128797
2011-04-03 20:06:31 +00:00
Nick Kledzik
4f8ccdf2f8 <rdar://problem/9073695> std::uncaught_exception() becomes true before evaluating the throw-expression rather than after
llvm-svn: 127499
2011-03-11 22:33:07 +00:00
Howard Hinnant
709b108ae1 Corrected const-correctness on nullptr type_traits, and beefed up the test for nullptr_t.
llvm-svn: 127338
2011-03-09 17:17:06 +00:00
Howard Hinnant
a8d8ca4d6f http://llvm.org/bugs/show_bug.cgi?id=9326
llvm-svn: 126504
2011-02-25 19:52:41 +00:00
Howard Hinnant
bd356a8011 Update testit to default to clang
llvm-svn: 125498
2011-02-14 18:06:10 +00:00
Howard Hinnant
2774545736 Bug 9096 - list::iterator not default constructible
llvm-svn: 124508
2011-01-28 23:46:28 +00:00
Howard Hinnant
d44be13fa8 minor corrections to test, and hook is_base_of up to clang intrinsic
llvm-svn: 124502
2011-01-28 20:00:37 +00:00
Howard Hinnant
389eb9b54a placeholder test
llvm-svn: 124193
2011-01-25 16:32:04 +00:00
Douglas Gregor
a7b2241407 Eliminate the C++0x-only is_convertible testing function that accepts
a cv-qualifier rvalue reference to the type, e.g.,

  template <class _Tp> char  __test(const volatile typename remove_reference<_Tp>::type&&);

The use of this function signature rather than the more
straightforward one used in C++98/03 mode, e.g.,

  template <class _Tp> char  __test(_Tp);

is broken in two ways:

  1) An rvalue reference cannot bind to lvalues, so is_convertible<X&,
  X&>::value would be false. This breaks two of the unique_ptr tests
  on Clang and GCC >= 4.5. Prior GCC's seem to have allowed rvalue
  references to bind to lvalues, allowing this bug to slip in.

  2) By adding cv-qualifiers to the type we're converting to, we get
  some incorrect "true" results for, e.g., is_convertible<const X&, X&>::value.

llvm-svn: 124166
2011-01-25 01:15:41 +00:00
Chandler Carruth
ce395a9acd Teach the Lit configuration to actually use the cxx0x setting when
constructing compile flags, and to link against the 'rt' library on
Linux for clock_gettime and friends.

llvm-svn: 124052
2011-01-23 01:05:20 +00:00
Howard Hinnant
7f64810bc8 LWG 1385 [FCD] tuple_cat should be a single variadic signature (http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#1385). This issue is only in Ready status, meaning it is not official, but probably will be this March in Madrid. It was tentatively accepted in Batavia with the previso that Bill and I didn't have any problems implementing it. This is my part of that agreement.
llvm-svn: 121619
2010-12-11 20:47:50 +00:00
Michael J. Spencer
f5799be4a8 Add CMake build and fix major Linux blockers.
llvm-svn: 121510
2010-12-10 19:47:54 +00:00
Howard Hinnant
7f8e26867f Test adjustment for recent changes in allocator_traits
llvm-svn: 121503
2010-12-10 19:22:37 +00:00
Howard Hinnant
088bd9aa14 This got accidentally removed
llvm-svn: 121502
2010-12-10 19:22:00 +00:00
Howard Hinnant
966b5a3157 N3158 Missing preconditions for default-constructed match_result objects
llvm-svn: 121282
2010-12-08 21:07:55 +00:00
Howard Hinnant
3135def61d cleaning up...
llvm-svn: 121275
2010-12-08 20:09:09 +00:00
Howard Hinnant
b5452b3db5 After a long break to wait for the atomic spec to settle, this completes the library part of <atomic>. It currently won't even parse as it depends on the existence of the intrinsics specified at http://libcxx.llvm.org/atomic_design_a.html. Everything has been tested using fake intrinsics which have now been removed. As the intrinsics come online, the ATOMIC_* macros will need to be adjusted to reflect which operations are lock-free. These macros will probably need to be #ifdef'd for each supported platform.
llvm-svn: 121267
2010-12-08 17:20:28 +00:00
Michael J. Spencer
5f53fceff0 test: Rename string_op+= to string_op_plus_equal. Windows git doesn't like it.
llvm-svn: 121265
2010-12-08 17:06:47 +00:00
Howard Hinnant
0e1cd17d0a atomics ...
llvm-svn: 121202
2010-12-07 23:20:28 +00:00
Howard Hinnant
c772a62096 Work on <atomic> continues. The file size is actually sane now...
llvm-svn: 121181
2010-12-07 20:46:14 +00:00
Howard Hinnant
9847abacb1 Getting <atomic> warmed back up. We have a hopefully more stable spec now. And I believe the intrinsic spec at http://libcxx.llvm.org/atomic_design_a.html is still good.
llvm-svn: 121064
2010-12-06 23:10:08 +00:00
Howard Hinnant
1596c4531b N3189 Observers for the three handler functions
llvm-svn: 120712
2010-12-02 16:45:21 +00:00
Howard Hinnant
92e3718b13 Implemented N3194
llvm-svn: 120458
2010-11-30 20:23:32 +00:00
Howard Hinnant
e78881314a Update testsuite strucuture to latest draft
llvm-svn: 120064
2010-11-23 22:13:07 +00:00
Howard Hinnant
b32f147bbf Update testsuite strucuture to latest draft
llvm-svn: 120058
2010-11-23 20:55:56 +00:00
Howard Hinnant
fedfe3b69c Update testsuite strucuture to latest draft
llvm-svn: 120057
2010-11-23 20:55:36 +00:00
Howard Hinnant
ab7be6e43c Update testsuite strucuture to latest draft
llvm-svn: 120054
2010-11-23 20:47:09 +00:00
Howard Hinnant
4030e72457 Update testsuite strucuture to latest draft
llvm-svn: 120045
2010-11-23 20:26:48 +00:00
Howard Hinnant
46cc61ea7c Update testsuite strucuture to latest draft
llvm-svn: 120043
2010-11-23 20:25:10 +00:00
Howard Hinnant
e8ce332127 Update testsuite strucuture to latest draft
llvm-svn: 120040
2010-11-23 20:21:36 +00:00
Howard Hinnant
274541968b Update testsuite strucuture to latest draft
llvm-svn: 120036
2010-11-23 19:52:19 +00:00
Howard Hinnant
e5cb278766 Update testsuite strucuture to latest draft
llvm-svn: 120029
2010-11-23 19:15:49 +00:00
Howard Hinnant
e3120ed1bf N3188 - Revision to N3113: Async Launch Policies (CH 36)
llvm-svn: 120027
2010-11-23 18:33:54 +00:00
Howard Hinnant
3dc6455ff0 N3191: C++ Timeout Specification
llvm-svn: 119909
2010-11-20 19:16:30 +00:00
Howard Hinnant
092980dd65 N3123
llvm-svn: 119906
2010-11-20 18:25:22 +00:00
Howard Hinnant
ca74048398 N3142. Many of these traits are just placeholders with medium quality emulation; waiting on compiler intrinsics to do it right.
llvm-svn: 119854
2010-11-19 22:17:28 +00:00
Howard Hinnant
d518d1c807 LWG 1522
llvm-svn: 119710
2010-11-18 17:34:48 +00:00
Howard Hinnant
48d05bd26c LWG 1339
llvm-svn: 119699
2010-11-18 16:13:03 +00:00
Howard Hinnant
a4a1ef1fc2 LWG 1404
llvm-svn: 119609
2010-11-18 01:40:00 +00:00
Howard Hinnant
d09f711dc2 LWG 1325
llvm-svn: 119571
2010-11-17 21:53:14 +00:00
Howard Hinnant
5ba1459c4c LWG 1323
llvm-svn: 119560
2010-11-17 21:11:40 +00:00
Howard Hinnant
601afb30ec LWG 1191
llvm-svn: 119545
2010-11-17 19:52:17 +00:00
Howard Hinnant
ef6168357a LWG 1118
llvm-svn: 119541
2010-11-17 19:22:43 +00:00
Howard Hinnant
412dbebe1b license change
llvm-svn: 119395
2010-11-16 22:09:02 +00:00
Howard Hinnant
c4931c4746 I have reverted all contributions made by Jesse Towner in revision 110724
llvm-svn: 119383
2010-11-16 21:10:23 +00:00
Howard Hinnant
a7c2f3eac3 [atomics.types.address]
llvm-svn: 117033
2010-10-21 17:44:19 +00:00
Howard Hinnant
f9c02e15c4 atomic_schar, atomic_uchar, atomic_short, atomic_ushort, atomic_int, atomic_uint, atomic_long, atomic_ulong, atomic_llong, atomic_ullong, atomic_char16_t, atomic_char32_t and atomic_wchar_t.
llvm-svn: 116860
2010-10-19 21:22:10 +00:00
Howard Hinnant
d89b01e521 atomic_char
llvm-svn: 116813
2010-10-19 16:51:18 +00:00
Howard Hinnant
c1ef47986b Fix two test bugs
llvm-svn: 116515
2010-10-14 21:08:32 +00:00
Howard Hinnant
149f659af3 Relaxing timing test a bit to avoid spurious test failures under load
llvm-svn: 115920
2010-10-07 16:25:31 +00:00
Howard Hinnant
2b672e24a5 Still working on the basic design of <atomic>. I'm working towards a system by which the compiler only needs to define the strongest intrinsics it can. Weaker atomics in the library automatically try stronger and stronger variants, picking the weakest compiler intrinsic available. If no compiler intrinsics are available for a given operation, the library locks a mutex and does the job. Better documentation to follow...
llvm-svn: 115538
2010-10-04 18:52:54 +00:00
Howard Hinnant
748a5279b1 [atomics.flag] completed. Initialization is not working on clang and can't be made to work without defaulted default constructors.
llvm-svn: 115207
2010-09-30 21:05:29 +00:00
Howard Hinnant
88efc1c7a5 Contemplating this <atomic> reorganization...
llvm-svn: 115087
2010-09-29 21:20:03 +00:00
Howard Hinnant
7d489d7a73 Didn't mean to commit that one
llvm-svn: 115058
2010-09-29 18:33:45 +00:00
Howard Hinnant
7387390d6e Wrestling with the slowly dawning realization that <atomic> isn't implementable on any compiler at my disposal...
llvm-svn: 115054
2010-09-29 18:13:54 +00:00
Howard Hinnant
eb9e9a3710 fixing whitespace
llvm-svn: 114967
2010-09-28 17:19:10 +00:00
Howard Hinnant
cfe0b0a1ab [atomics.order]
llvm-svn: 114966
2010-09-28 17:13:38 +00:00
Howard Hinnant
cd39d413b4 Getting started on <atomic>
llvm-svn: 114887
2010-09-27 21:17:38 +00:00
Daniel Dunbar
5f09d9e00a tests/lit: Split options into two groups, so we don't get driver warnings about
unused linker arguments for compile only tests.

llvm-svn: 113935
2010-09-15 04:31:58 +00:00
Daniel Dunbar
ecd98d5173 tests: Remove some stray cleanup code.
llvm-svn: 113934
2010-09-15 04:18:37 +00:00
Daniel Dunbar
bc9a848e04 tests: Fixup lit config, which got garbled somehow...
llvm-svn: 113931
2010-09-15 04:11:29 +00:00
Daniel Dunbar
42ea463089 tests: Sketch a lit config for running libc++ tests; currently expects libc++ to have been installed.
llvm-svn: 113925
2010-09-15 03:57:04 +00:00
Howard Hinnant
1c1620b269 Updated by-chapter-summary with weekly test results, and fixed up some bad paths in some tests caused by aligning the test suite with N3126.
llvm-svn: 113403
2010-09-08 20:31:42 +00:00
Howard Hinnant
10b9b7b4bd Hooked the following up to clang: is_class, is_enum, has_nothrow_copy_assign, has_trivial_destructor, has_virtual_destructor, is_pod. Implemented has_copy_assign.
llvm-svn: 113373
2010-09-08 17:55:32 +00:00
Howard Hinnant
1be27f0929 has_nothrow_copy_assign hooked up to clang
llvm-svn: 113364
2010-09-08 16:39:18 +00:00
Howard Hinnant
331b3dd2ad has_trivial_copy_assign hooked up to clang (without workarounds). Filed http://llvm.org/bugs/show_bug.cgi?id=8109 to take care of several types which don't work yet. If there is some reason we don't want to handle these types in the compiler, I can handle most of them in the library.
llvm-svn: 113312
2010-09-07 23:38:59 +00:00
Howard Hinnant
bfc4026f4c Made a stab at has_copy_constructor. Got it mostly working for g++-4.0, but only works for scalar types on clang. Ultimately this needs a compiler-supported is_constructible which clang is missing, and won't be able to use until it gets variadic templates.
llvm-svn: 113304
2010-09-07 23:11:28 +00:00
Howard Hinnant
06fc97019a has_nothrow_copy_constructor hooked up to clang. Filed http://llvm.org/bugs/show_bug.cgi?id=8107 to take care of several types which don't work yet. If there is some reason we don't want to handle these types in the compiler, I can handle most of them in the library.
llvm-svn: 113294
2010-09-07 22:09:07 +00:00
Howard Hinnant
01fd31000b has_trivial_copy_constructor hooked up to clang. Filed http://llvm.org/bugs/show_bug.cgi?id=8105 to take care of void, arrays of incomplete bounds and complete bounds which don't work yet. If there is some reason we don't want to handle these types in the compiler, I can handle them in the library.
llvm-svn: 113270
2010-09-07 20:31:18 +00:00
Howard Hinnant
ba6f71b030 Made a stab at has_default_constructor. Got it mostly working for g++-4.0, but only works for scalar types on clang. Ultimately this needs a compiler-supported is_constructible which clang is missing, and won't be able to use until it gets variadic templates.
llvm-svn: 113225
2010-09-07 17:47:31 +00:00
Howard Hinnant
f336abfcd2 has_nothrow_default_constructor hooked up to clang. Filed http://llvm.org/bugs/show_bug.cgi?id=8101 to take care of void, arrays of incomplete types, and classes with virtual destructors which don't work yet. If there is some reasons we don't want to handle these types in the compiler, I can handle them in the library.
llvm-svn: 113217
2010-09-07 17:15:17 +00:00
Howard Hinnant
c3ed8c312e has_trivial_default_constructor hooked up to clang. Filed http://llvm.org/bugs/show_bug.cgi?id=8097 to take care of void and arrays of incomplete types which don't work yet. If there is some reasons we don't want to handle these types in the compiler, I can handle them in the library.
llvm-svn: 113205
2010-09-07 15:53:26 +00:00
Howard Hinnant
db3e9975d0 Working the type_traits area: Hooked up to clang's __is_union. Got has_trivial_copy_assign working.
llvm-svn: 113162
2010-09-06 19:10:31 +00:00
Howard Hinnant
cbf93f3959 sync with N3126
llvm-svn: 113101
2010-09-05 01:14:30 +00:00
Howard Hinnant
f9e81f9acb sync with N3126
llvm-svn: 113100
2010-09-05 01:10:45 +00:00
Howard Hinnant
771f325a1f sync with N3126
llvm-svn: 113099
2010-09-05 01:06:34 +00:00
Howard Hinnant
5bed8c6f65 sync with N3126
llvm-svn: 113098
2010-09-05 00:57:20 +00:00
Howard Hinnant
e7d99b29be sync with N3126
llvm-svn: 113097
2010-09-05 00:49:04 +00:00
Howard Hinnant
959cf8aede Fix whitespace
llvm-svn: 113089
2010-09-04 23:46:48 +00:00
Howard Hinnant
7609c9b665 Changed __config to react to all of clang's currently documented has_feature flags, and renamed _LIBCPP_MOVE to _LIBCPP_HAS_NO_RVALUE_REFERENCES to be more consistent with the rest of the libc++'s flags, and with clang's nomenclature.
llvm-svn: 113086
2010-09-04 23:28:19 +00:00
Howard Hinnant
b77c0c03bb [futures.atomic_future] and notify_all_at_thread_exit. This completes the header <future> and all of Chapter 30 (for C++0x enabled compilers).
llvm-svn: 113017
2010-09-03 21:46:37 +00:00
Howard Hinnant
ead85506a7 [futures.shared_future]
llvm-svn: 112990
2010-09-03 18:39:25 +00:00
Howard Hinnant
27f000e10b [futures.task] and [futures.async]. Requires variadics and rvalue-ref support.
llvm-svn: 112500
2010-08-30 18:46:21 +00:00
Howard Hinnant
c009b09c2b [futures.unique_future]
llvm-svn: 112423
2010-08-29 14:20:30 +00:00
Howard Hinnant
8759d9d4d0 [futures.promise]. Depends on rvalue-ref support to work 100%.
llvm-svn: 112388
2010-08-28 21:01:06 +00:00
Howard Hinnant
dae3481b28 Getting started on <future>
llvm-svn: 112061
2010-08-25 17:32:05 +00:00
Howard Hinnant
01f586ca2c Corrected some int -> char narrowing conversions
llvm-svn: 111849
2010-08-23 21:41:03 +00:00
Howard Hinnant
8c93ff2ce3 Accidentally changed a data file during the whitespace cleanup
llvm-svn: 111845
2010-08-23 21:23:21 +00:00
Howard Hinnant
fae824a32d Remove tabs
llvm-svn: 111778
2010-08-22 13:53:14 +00:00
Howard Hinnant
2807d4a58b Fixing whitespace problems
llvm-svn: 111769
2010-08-22 01:04:38 +00:00
Howard Hinnant
94b2dd0998 Fixing whitespace problems
llvm-svn: 111767
2010-08-22 00:59:46 +00:00
Howard Hinnant
2cb7936efe Fixing whitespace problems
llvm-svn: 111765
2010-08-22 00:50:25 +00:00
Howard Hinnant
bf2897cf45 Fixing whitespace problems
llvm-svn: 111764
2010-08-22 00:47:54 +00:00
Howard Hinnant
f36101dd3d Fixing whitespace problems
llvm-svn: 111763
2010-08-22 00:45:01 +00:00
Howard Hinnant
a0eaf608cd Fixing whitespace problems
llvm-svn: 111762
2010-08-22 00:42:21 +00:00
Howard Hinnant
3bad6b61e5 Fixing whitespace problems
llvm-svn: 111761
2010-08-22 00:39:25 +00:00
Howard Hinnant
b5a4c50a03 Fixing whitespace problems
llvm-svn: 111760
2010-08-22 00:31:12 +00:00
Howard Hinnant
0022123b95 Fixing whitespace problems
llvm-svn: 111759
2010-08-22 00:29:01 +00:00
Howard Hinnant
66dbf0d311 Fixing whitespace problems
llvm-svn: 111758
2010-08-22 00:26:48 +00:00
Howard Hinnant
62bfbb0974 Fixing whitespace problems
llvm-svn: 111757
2010-08-22 00:22:24 +00:00
Howard Hinnant
5cf4e1f1f0 Fixing whitespace problems
llvm-svn: 111756
2010-08-22 00:20:12 +00:00
Howard Hinnant
8f2f7e7c79 Fixing whitespace problems
llvm-svn: 111755
2010-08-22 00:15:28 +00:00
Howard Hinnant
664ae8118e Fixing whitespace problems
llvm-svn: 111753
2010-08-22 00:08:10 +00:00
Howard Hinnant
9f1102b7fe US 108, N3109
llvm-svn: 111747
2010-08-21 21:14:53 +00:00
Howard Hinnant
e8e7af2477 DE 23
llvm-svn: 111746
2010-08-21 21:01:59 +00:00
Howard Hinnant
3db88036f6 US 117
llvm-svn: 111745
2010-08-21 20:58:44 +00:00
Howard Hinnant
4eb27b79c1 US 122, N3106
llvm-svn: 111742
2010-08-21 20:10:01 +00:00
Howard Hinnant
9b0b6d45d2 Installed allocator into std::function
llvm-svn: 111672
2010-08-20 19:36:46 +00:00
Howard Hinnant
907af2668f GB 85, GB 87
llvm-svn: 111546
2010-08-19 19:15:54 +00:00
Howard Hinnant
de6d046575 DE 19
llvm-svn: 111544
2010-08-19 19:09:08 +00:00
Howard Hinnant
1102fbbd67 US 98, US 99
llvm-svn: 111542
2010-08-19 18:59:38 +00:00
Howard Hinnant
20cc2a42b8 US 107
llvm-svn: 111538
2010-08-19 18:39:17 +00:00
Howard Hinnant
e57dc14c44 LWG 1278
llvm-svn: 111532
2010-08-19 17:40:04 +00:00
Howard Hinnant
5e2f7b89e9 Updated by-chapter chart with weekly test results. Also did some prototyping on result_of, but if-def'd out the prototyped part (which the LWG may or may not accept)
llvm-svn: 111389
2010-08-18 18:52:04 +00:00
Howard Hinnant
86550b0038 [re.alg.replace]. This finishes all of <regex>. That being said, <regex> is exceptionally difficult to thoroughly test. If anyone has the ability to test this, combined with the interest to do so, now would be a good time. :-)
llvm-svn: 111333
2010-08-18 00:13:08 +00:00
Howard Hinnant
14dcd3d1ff [re.tokiter]
llvm-svn: 111278
2010-08-17 20:42:03 +00:00
Howard Hinnant
2bf1fd99b1 [re.regiter]
llvm-svn: 111178
2010-08-16 20:21:16 +00:00
Howard Hinnant
51e3967484 [re.alg.match]
llvm-svn: 111075
2010-08-14 19:58:44 +00:00
Howard Hinnant
48b242a275 Everything under [re.results]
llvm-svn: 111074
2010-08-14 18:14:02 +00:00
Howard Hinnant
5cd6658798 Everything under [re.regex]
llvm-svn: 111024
2010-08-13 18:11:23 +00:00
Howard Hinnant
3d87b69f7d Filling out regex tests...
llvm-svn: 110955
2010-08-12 21:14:20 +00:00
Howard Hinnant
2bcfef5e9c Fix conflict with cstring and using namespace std
llvm-svn: 110736
2010-08-10 21:57:23 +00:00
Howard Hinnant
eb2692571f patch by Jesse Towner, and bug fix by Sebastian Redl
llvm-svn: 110724
2010-08-10 20:48:29 +00:00
Howard Hinnant
6e156afa71 Fixed some bugs in the ecma bracket epression regarding escaped characters, and got the awk grammar going.
llvm-svn: 109599
2010-07-28 17:35:27 +00:00
Howard Hinnant
c1124300fe lookahead for ecma
llvm-svn: 109548
2010-07-27 22:20:32 +00:00
Howard Hinnant
93da3b2e41 grep and egrep grammars
llvm-svn: 109534
2010-07-27 19:53:10 +00:00
Howard Hinnant
6afe8b0a23 continued regex development...
llvm-svn: 109512
2010-07-27 17:24:17 +00:00
Howard Hinnant
5c67986156 A good start on ecma regex's. Maybe even feature complete, not sure yet. Also an unrelated fix to is_constructible thanks to Daniel Krugler.
llvm-svn: 109479
2010-07-27 01:25:38 +00:00
Howard Hinnant
f7109438ea I believe posix extended expr is feature complete. Getting started on ecma exprs.
llvm-svn: 109126
2010-07-22 17:53:24 +00:00
Howard Hinnant
b762bea3ba A few more tests for posix extended alternation
llvm-svn: 109107
2010-07-22 14:12:20 +00:00