summaryrefslogtreecommitdiffstats
path: root/libcxx
Commit message (Collapse)AuthorAgeFilesLines
* 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-022-5/+6
| | | | llvm-svn: 221101
* Partial fix for building w/ libcxxrt on OSX. Patch from C Bergstrom.Eric Fiselier2014-11-012-2/+2
| | | | llvm-svn: 221029
* libcxxrt defines bad_array_new_length::what() so move that into a ↵Eric Fiselier2014-11-011-6/+6
| | | | | | conditional compilation block llvm-svn: 221025
* libcxxrt now implements bad_array_new_length and need to gaurd against ↵Eric Fiselier2014-10-291-2/+2
| | | | | | multiple defines. Patch from Baptiste Daroussin. llvm-svn: 220882
* 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-283-21/+117
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* [libcxx] use clang's __char16_t and __char32_t definitions on Linux in C++03 ↵Eric Fiselier2014-10-271-4/+0
| | | | | | | | | | | | | | | | mode. Summary: This fixes ODR violations in C++03 mode in test/localization/locale.stdcvt. The special case for linux was introduced in 2010 before clang always defined __char16_t and __char32_t. Reviewers: mclow.lists, danalbert, jroelofs, EricWF Reviewed By: EricWF Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D5930 llvm-svn: 220716
* Fix use of operator comma in is_permutation and delete comma operator for ↵Eric Fiselier2014-10-272-6/+14
| | | | | | | | | 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-279-36/+51
| | | | | | | | | | | | | | | | 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
* PR #21321 talked about implementation-defined behavior of realloc. I ↵Marshall Clow2014-10-272-28/+24
| | | | | | poo-poohed it, and was wrong. Fix the call in <locale>. Review the others, refactored some duplicated code, and found overflow bugs (and __event_cap_ was never getting updated, either). llvm-svn: 220702
* Change the comment on the closing #endif to match the condition on the ↵Marshall Clow2014-10-261-1/+1
| | | | | | corresponding #ifdef. Thanks to K-ballo for the catch. No functionality change. llvm-svn: 220647
* 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
* Make headers available in the build directoryJustin Bogner2014-10-231-4/+13
| | | | | | | | | | This essentially re-does r194825 and makes it possible to run clang with libc++ without having to install it, even if you don't have any version of libc++ installed in /usr/. This behaviour broke in r210577/r211629, which fixed pr18681. llvm-svn: 220489
* Add support for "fancy" pointers to promise and packaged_task.Eric Fiselier2014-10-233-30/+98
| | | | | | | | | | | | | | | | | | | | | 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-235-25/+251
| | | | | | | | | | | | | | | | | | | | | | | | 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
* Remove dead buildbot linkEric Fiselier2014-10-211-3/+0
| | | | llvm-svn: 220260
* [libcxx] Redo adding support for building and testing with an ABI library ↵Eric Fiselier2014-10-195-35/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-1817-123/+123
| | | | | | functionality change llvm-svn: 220142
* Add special case for finding the in-tree ABI library.Eric Fiselier2014-10-181-6/+13
| | | | | | | | When libcxx is built in-tree with libcxxabi it links against libcxxabi using the name of the cmake target and not the actual library name. The cmake target will not work with `find_library()`, so it needs special case handling. llvm-svn: 220121
* [libcxx] Add support for building and testing with an ABI library not along ↵Eric Fiselier2014-10-185-106/+162
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-173-34/+183
| | | | | | | | 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-162-0/+8
| | | | | | | 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
* Fix bad link in documentation. Thanks to rsmithEric Fiselier2014-10-161-1/+1
| | | | llvm-svn: 219898
* Add my buildbot to list of libc++ buildbots in documentationEric Fiselier2014-10-161-0/+3
| | | | llvm-svn: 219894
* Fixes PR21157 'tuple: non-default constructible tuple hard failure' Thanks ↵Marshall Clow2014-10-154-11/+87
| | | | | | 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-073-7/+43
| | | | | | specification'. Thanks to Louis Dionne for the fix. llvm-svn: 219243
* Fix win32 support header for mingw32.Dan Albert2014-10-061-0/+3
| | | | | | These functions are defined as static in the mingw32 headers. llvm-svn: 219140
* Mark module atomic as cplusplus11.Nico Weber2014-09-241-0/+1
| | | | | | | | | | | | | With clang, the header atomic requires __has_feature(cxx_atomic), which is only true in c++11 mode. Because of this, when using modules in c++98 with libc++ compilation of the std module would fail without this change, PR21002. (With gcc, only gcc4.7+ is needed, no c++11. But gcc doesn't have modules yet, and the module.modulemap language can't express things like "this is only required if the compiler is clang". If gcc gets module support, we'd probably have a module.modulemap file for each compiler that libc++ supports?) llvm-svn: 218372
* [libcxx] Fix installation of ABI headers. Fixes PR20936Eric Fiselier2014-09-231-4/+4
| | | | | | | | | | | | | | | | | | Summary: I changed the build so that each ABI header gets its own install rule. This gives us the flexibility to install different headers in different directories. This also fixes the problem where libstdc++ bits/<header>'s were not being installed under a bits directory. Test Plan: I tested this patch on linux against libstdc++ and libcxxabi. Reviewers: danalbert, mclow.lists, jroelofs Reviewed By: jroelofs Subscribers: jhunold, cfe-commits Differential Revision: http://reviews.llvm.org/D5454 llvm-svn: 218309
* Fix some type-traits (is_assignable, etc) dealing with classes that take ↵Marshall Clow2014-09-226-9/+39
| | | | | | non-const references as 'right hand side'. Add tests. Fixes PR# 20836 llvm-svn: 218286
* Support newlib as libc++'s C library [locale part]Jonathan Roelofs2014-09-194-169/+271
| | | | | | http://reviews.llvm.org/D5385 llvm-svn: 218144
* Fix PR#20843: binomial_distribution<unsigned> is broken. Add test to ensure ↵Marshall Clow2014-09-172-1/+15
| | | | | | that signed and unsigned verstions produce the same sequence. llvm-svn: 217976
* Fix char_traits functions for GCC compatibility.Dan Albert2014-09-171-104/+52
| | | | | | | | GCC 4.9 fails to inline these functions at -O1 because they are used indirectly. Declare them as inline instead of always_inline. Discussion in GCC bugreport: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63220 llvm-svn: 217961
* Add include of <cassert> for the operator commaMarshall Clow2014-09-171-0/+1
| | | | llvm-svn: 217938
* K-ballo pointed out *another* mistype in my changeMarshall Clow2014-09-172-9/+6
| | | | llvm-svn: 217936
* Fix for mismatch to handle evil iterators which overload operator commaMarshall Clow2014-09-161-2/+2
| | | | llvm-svn: 217903
* Create a 'comma_iterator' class that overloads operator, and asserts when ↵Marshall Clow2014-09-163-0/+121
| | | | | | it's called. Add tests to mismatch to make sure it can't be blindsided by such an evil iterator. More tests for other algorithms forthcoming. Thanks to STL for pointing this out at CppCon and Yakov Galka for opening LWG issue #2133 llvm-svn: 217902
* Fix a bug in the move-assigment operator for basic_stringbuf. Thanks to ↵Marshall Clow2014-09-162-0/+41
| | | | | | Johnathan Wakeley for the bug report llvm-svn: 217894
OpenPOWER on IntegriCloud