summaryrefslogtreecommitdiffstats
path: root/libcxx/test
Commit message (Collapse)AuthorAgeFilesLines
* Fix the tests I broke with the last commit. Sorry for the noiseMarshall Clow2014-11-172-4/+3
| | | | llvm-svn: 222165
* Implement LWG2400 - 'shared_ptr's get_deleter() should use addressof()', and ↵Marshall Clow2014-11-171-0/+8
| | | | | | add tests. Mark LWG2400 and LWG2404 as complete llvm-svn: 222161
* Reworked mismatch tests to count the number of comparisons, and make sure we ↵Marshall Clow2014-11-172-58/+47
| | | | | | are conforming with LWG2404. We are llvm-svn: 222159
* Fix a warning in the test; no functionality changeMarshall Clow2014-11-171-1/+1
| | | | llvm-svn: 222143
* Implement void_t from N3911. Add a private version for use in the library ↵Marshall Clow2014-11-171-0/+69
| | | | | | before C++1z. Update the 1z status page, marking a bunch of issues that don't require library changes as complete (2129, 2212, 2230, 2233, 2325, 2365, 2376) llvm-svn: 222138
* Add tests to ensure that reference_wrapper<T> is trivially copyable. This ↵Marshall Clow2014-11-171-5/+36
| | | | | | was added to C++1z with the adoption of N4277, but libc++ already implemented it as a conforming extension. No code changes were needed, just more tests. llvm-svn: 222132
* Split thread test into two parts. Mark one as XFAIL with ASAN.Eric Fiselier2014-11-152-22/+75
| | | | | | | | The second part of the test checks that std::terminate is called when a running thread is move assigned to. Calling std::terminate prevents some of the destructors to be called and ASAN fires on this. llvm-svn: 222076
* add debug info when compiling sanitizer testsEric Fiselier2014-11-141-1/+1
| | | | llvm-svn: 222051
* [libcxx] Fix memory leak in strstream tests.Eric Fiselier2014-11-148-0/+8
| | | | | | | | | | | | | | Summary: The strstream function `str()` sets `freeze(true)`. When `freeze` is true the destructor is not allowed to free any dynamically allocated memory. The memory leak causes ASAN to fail on these tests. To ensure memory is deallocated `strstream.freeze(false)` is called at the end of the tests. Reviewers: danalbert, mclow.lists Reviewed By: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D6261 llvm-svn: 222025
* Split string capacity test into two parts and mark one part as UNSUPPORTED ↵Eric Fiselier2014-11-142-12/+54
| | | | | | | | | | | | | | | when using sanitizers. The test is split such that: - max_size.pass.cpp tests that string::resize() fails to allocator for max_size and max_size -1 - over_max_size.pass.cpp tests that string::resize() throws a length error for max_size + 1 The test was split into two because max_size.pass.cpp cannot pass with sanitizers but over_max_size.pass.cpp can. llvm-svn: 221969
* Mark more tests as UNSUPPORTED with ASAN and MSAN.Eric Fiselier2014-11-144-2/+12
| | | | | | | | | | These tests fail for 2 reasons when using ASAN and MSAN. 1. If allocator_may_return_null=0 they will fail because null is returned or an exception is thrown. 2. When allocator_may_return_null=1 the new_handler is still not called. This results in an assertion failures. llvm-svn: 221967
* Setup llvm-symbolizer when running the tests with sanitizersEric Fiselier2014-11-141-0/+14
| | | | llvm-svn: 221966
* Add -O3 when testing with UBSAN. This triggers far undefined behaviourEric Fiselier2014-11-141-1/+1
| | | | llvm-svn: 221964
* Mark more locale tests as unsupported with ASAN and MSANEric Fiselier2014-11-138-0/+8
| | | | llvm-svn: 221937
* Replaced checking in string_view::remove_suffix/remove_prefix by ↵Marshall Clow2014-11-112-10/+4
| | | | | | _LIBCPP_ASSERT, since this is technically undefined behavior. Fixes PR#21496 llvm-svn: 221717
* Added vector<T>::insert tests suggested by code coverage resultsMarshall Clow2014-11-115-0/+130
| | | | llvm-svn: 221689
* EricQWF's code coverage work showed that none of the libc++ tests were ↵Marshall Clow2014-11-114-7/+81
| | | | | | exercising some code in vector<bool>. Add more tests in an attempt to get better coverage llvm-svn: 221644
* Fix rvalue bug in __has_operator_addressofEric Fiselier2014-11-051-1/+14
| | | | llvm-svn: 221398
* Fix operator & detection trait to check for free function overloads as wellEric Fiselier2014-11-051-0/+5
| | | | llvm-svn: 221395
* Mark another test as UNSUPPORTED with ASAN and MSANEric Fiselier2014-11-041-0/+2
| | | | llvm-svn: 221275
* Actually mark the tests an unsupported with MSAN (not just ASAN)Eric Fiselier2014-11-0430-30/+30
| | | | llvm-svn: 221240
* Mark tests that replace operator new/delete as UNSUPPORTED with ASAN and MSAN.Eric Fiselier2014-11-0432-6/+68
| | | | | | | tests that replace operator new/delete won't link when using ASAN and MSAN because these sanitizers also replace new/delete. llvm-svn: 221236
* Add test for type properties of std::reference_wrapperEric Fiselier2014-11-041-0/+27
| | | | llvm-svn: 221224
* Mark string_view::to_string as const. Fixes PR21428Marshall Clow2014-11-021-4/+4
| | | | llvm-svn: 221101
* Fix example in documentation of target triple sanitization.Eric Fiselier2014-10-281-1/+1
| | | | llvm-svn: 220804
* [libcxx] Delay evaluation of __make_tuple_types to prevent blowing the max ↵Eric Fiselier2014-10-282-0/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | template instantiation depth. Fixes Bug #18345 Summary: http://llvm.org/bugs/show_bug.cgi?id=18345 Tuple's constructor and assignment operators for "tuple-like" types evaluates __make_tuple_types unnecessarily. In the case of a large array this can blow the template instantiation depth. Ex: ``` #include <array> #include <tuple> #include <memory> typedef std::array<int, 1256> array_t; typedef std::tuple<array_t> tuple_t; int main() { array_t a; tuple_t t(a); // broken t = a; // broken // make_shared uses tuple behind the scenes. This bug breaks this code. std::make_shared<array_t>(a); } ``` To prevent this from happening we delay the instantiation of `__make_tuple_types` until after we perform the length check. Currently `__make_tuple_types` is instantiated at the same time that the length check . Test Plan: Two tests have been added. One for the "tuple-like" constructors and another for the "tuple-like" assignment operator. Reviewers: mclow.lists, EricWF Reviewed By: EricWF Subscribers: K-ballo, cfe-commits Differential Revision: http://reviews.llvm.org/D4467 llvm-svn: 220769
* Test that the single-threaded lit feature is available iff the corresponding ↵Jonathan Roelofs2014-10-271-0/+18
| | | | | | | | guard is #defined http://reviews.llvm.org/D6006 llvm-svn: 220729
* Add special case handling of linux target triples that do not contain `-gnu`.Eric Fiselier2014-10-271-7/+16
| | | | | | | | | | | For targets that end it `redhat-linux` and `suse-linux` manually add the `-gnu` section of the target since `linux-gnu` is needed in the testsuite. This patch also moves the removal of minor and patchlevel numbers from OSX triples to be handled when deducing the triple instead of when adding available features. llvm-svn: 220724
* Add test to ensure including <atomic> fails when _LIBCPP_HAS_NO_THREADS is ↵Eric Fiselier2014-10-271-0/+23
| | | | | | defined. llvm-svn: 220722
* Fix use of operator comma in is_permutation and delete comma operator for ↵Eric Fiselier2014-10-271-5/+13
| | | | | | | | | test iterators. The comma operators in the test iterators give better error messages when they are deleted as opposed to not defined. Delete these functions when possible. llvm-svn: 220715
* [libcxx] Remove use of uniform initialization from regex tests so that they ↵Eric Fiselier2014-10-275-38/+38
| | | | | | | | | | | | | | compile in C++03. Reviewers: danalbert, jroelofs, mclow.lists Reviewed By: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D5957 llvm-svn: 220707
* [libcxx] Fix use of operator comma where the types can be user definedEric Fiselier2014-10-272-1/+16
| | | | | | | | | | | | | | | | 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
* Change uses of `sys.platform == 'linux2' to `sys.platform.startswith('linux')Eric Fiselier2014-10-231-3/+3
| | | | | | | | Although the current method is valid up till python 3.3 (which is not supported) this seems to be a clearer way of checking for linux and moves the tests towards python 3 compatibility. llvm-svn: 220534
* [libcxx] XFAIL all currently failing libc++ tests for linux.Eric Fiselier2014-10-2322-0/+71
| | | | | | | | | | | | | | | | | | Summary: Pretty please? We now have a significant number of builders that test libc++. I really want those builders to be green. Most of these failures are due to differences in locale data, including those in regex. I will continue working on fixing the locale and regex tests but there is no consensus on what the correct direction to go. Since the builders display a list of XFAIL tests they are by no means hidden. It just means they are expected failures. Now unexpected failures won't get mixed in with well known and expected failures. Reviewers: mclow.lists, jroelofs, danalbert Reviewed By: danalbert Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D5941 llvm-svn: 220512
* Only link tests against -ldl on linuxEric Fiselier2014-10-231-1/+1
| | | | llvm-svn: 220510
* Add support for "fancy" pointers to promise and packaged_task.Eric Fiselier2014-10-232-0/+60
| | | | | | | | | | | | | | | | | | | | | Summary: This patch is very closely related to D4859. Please see http://reviews.llvm.org/D4859 for more information. This patch adds support for "fancy" pointers and allocators to promise and packaged_task. The changes made to support this are exactly the same as in D4859. Test Plan: "fancy" pointer tests were added to each constructor affected by the change. Reviewers: danalbert, mclow.lists Reviewed By: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D4862 llvm-svn: 220471
* Add support for "fancy" pointers to shared_ptr. Fixes PR20616Eric Fiselier2014-10-234-0/+212
| | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch add support for "fancy pointers/allocators" as well as fixing support for shared_pointer and "minimal" allocators. Fancy pointers are class types that meet the NullablePointer requirements. In our case they are created by fancy allocators. `support/min_allocator.h` is an archetype for these types. There are three types of changes made in this patch: 1. `_Alloc::template rebind<T>::other` -> `__allocator_traits_rebind<_Alloc, T>::type`. This change was made because allocators don't need a rebind template. `__allocator_traits_rebind` is used instead of `allocator_traits::rebind` because use of `allocator_traits::rebind` requires a workaround for when template aliases are unavailable. 2. `a.deallocate(this, 1)` -> `a.deallocate(pointer_traits<self>::pointer_to(*this), 1)`. This change change is made because fancy pointers aren't always constructible from raw pointers. 3. `p.get()` -> `addressof(*p.get())`. Fancy pointers aren't actually a pointer. When we need a "real" pointer we take the address of dereferencing the fancy pointer. This should give us the actual raw pointer. Test Plan: Tests were added using `support/min_allocator.h` to each affected shared_ptr overload and creation function. These tests can only be executed in C++11 or greater since min_allocator is only available then. A extra test was added for the non-variadic versions of allocate_shared. Reviewers: danalbert, mclow.lists Reviewed By: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D4859 llvm-svn: 220469
* Fix a couple of failing tests for C++03 by checking for rvalue reference ↵Marshall Clow2014-10-232-3/+4
| | | | | | support first. llvm-svn: 220465
* Add -ldl to libc++ tests when sanitizers are used.Eric Fiselier2014-10-231-0/+2
| | | | | | | Clang 3.6 no longer links the sanitizer runtime library dependancies when -nodefaultlibs is used. This patch manually links in a missing dependancy. llvm-svn: 220463
* Some tests used __typeof__ instead of decltype. Replace these usages.Marshall Clow2014-10-214-8/+8
| | | | llvm-svn: 220296
* LWG #2212 (not yet adopted) mandates that tuple_size/tuple_element are ↵Marshall Clow2014-10-212-0/+101
| | | | | | available if <array> or <utility> are included (not just <tuple>). We already do this. Add some tests to make sure that this remains true. llvm-svn: 220295
* [libcxx] Redo adding support for building and testing with an ABI library ↵Eric Fiselier2014-10-192-9/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | not along linker paths Summary: This is the second attempt at allowing for the use of libraries that the linker cannot find. The first attempt used `CMAKE_LIBRARY_PATH` and `find_library` to select which ABI library should be used. There were a number of problems with this approach: - `find_library` didn't work with cmake targets (ie in-tree libcxxabi build) - It wasn't always possible to determine where `find_library` actually found your library. - `target_link_libraries` inserted the path of the ABI library into libc++'s RPATH when `find_library` was used. - Linking libc++ and it's ABI library is a special case. It's a lot easier to keep it simple. After discussion with @cbergstrum a new approach was decided upon. This patch achieve the same ends by simply using `LIBCXX_CXX_ABI_LIBRARY_PATH` to specify where to find the library (if the linker won't find it). When this variable is defined it is simply added as a library search path when linking libc++. It is a lot easier to duplicate this behavior in LIT. It also prevents libc++ from being linked with an RPATH. Reviewers: mclow.lists, cbergstrom, chandlerc, danalbert Reviewed By: chandlerc, danalbert Subscribers: chandlerc, cfe-commits Differential Revision: http://reviews.llvm.org/D5860 llvm-svn: 220157
* Fix unused variables in tests to placate scan-build. Patch from Steve MacKenzie.Eric Fiselier2014-10-195-0/+8
| | | | llvm-svn: 220154
* Whitespace maintenance. Remove a bunch of tabs that snuck in. No ↵Marshall Clow2014-10-1815-111/+111
| | | | | | functionality change llvm-svn: 220142
* [libcxx] Add support for building and testing with an ABI library not along ↵Eric Fiselier2014-10-182-11/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | linker paths Summary: This patch adds support for building/testing libc++ with an ABI library that the linker would not normally find. - `CMAKE_LIBRARY_PATH` is used to specify the list of search directories. - The ABI library is now found using `find_library` instead of assuming its along the linker's search path. - `CMAKE_LIBRARY_PATH` is passed to our LIT config as `library_paths`. - For each path in `library_paths` the following flags are added `-L<path> -Wl,-rpath -Wl,<path>` Some changes in existing behavior were also added: - `target_link_libraries` is now passed the ABI library file instead of the library name. Ex `target_link_libraries(cxx "/usr/lib/libc++abi.so")` vs `target_link_libraries(cxx "c++abi")`. - `-Wl,-rpath -Wl,<path>` is now used on OSX to link to libc++ instead of env['DYLD_LIBRARY_PATH'] if `use_system_lib=False`. Reviewers: mclow.lists, danalbert, EricWF Reviewed By: EricWF Subscribers: emaste, cfe-commits Differential Revision: http://reviews.llvm.org/D5038 llvm-svn: 220118
* [libcxx] Fix SFINAE in <cmath>. Patch from K-Ballo.Eric Fiselier2014-10-171-0/+143
| | | | | | | | Delay instantiation of `__numeric_type` within <cmath>, don't instantiate it when the `is_arithmetic` conditions do not hold as it causes errors with user-defined types with ambiguous conversions. Fixes PR21083. llvm-svn: 219998
* [libcxx] Add support for LLVM_USE_SANITIZER=UndefinedEric Fiselier2014-10-161-0/+5
| | | | | | | LLVM_USE_SANITIZER=Undefined support was added to the LLVM CMake configuration. Update libc++'s handling of LLVM_USE_SANITIZER to support this as well. llvm-svn: 219987
* Fixes PR21157 'tuple: non-default constructible tuple hard failure' Thanks ↵Marshall Clow2014-10-153-0/+56
| | | | | | to Louis Dionne for the bug report and the patch. llvm-svn: 219785
* Fix for PR 19616: 'tuple_cat of nested tuples fails in noexcept ↵Marshall Clow2014-10-072-1/+28
| | | | | | specification'. Thanks to Louis Dionne for the fix. llvm-svn: 219243
* Fix some type-traits (is_assignable, etc) dealing with classes that take ↵Marshall Clow2014-09-225-0/+32
| | | | | | non-const references as 'right hand side'. Add tests. Fixes PR# 20836 llvm-svn: 218286
OpenPOWER on IntegriCloud