Commit Graph

3523 Commits

Author SHA1 Message Date
Eric Fiselier
2aad5d548c Fix bug in test allocator that incorrectly computed the allocation size
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@271195 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-30 01:31:04 +00:00
Asiri Rathnayake
a3eac518e6 [libcxx] Improve tests to use the UNSUPPORTED lit directive
Quite a few libcxx tests seem to follow the format:
 #if _LIBCPP_STD_VER > X
   // Do test.
 #else
   // Empty test.
 #endif
We should instead use the UNSUPPORTED lit directive to exclude the test on
earlier C++ standards. This gives us a more accurate number of test passes
for those standards and avoids unnecessary conflicts with other lit
directives on the same tests.

Reviewers: bcraig, ericwf, mclow.lists

Differential revision: http://reviews.llvm.org/D20730

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@271108 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-28 08:57:35 +00:00
Eric Fiselier
dcb35ad8ae Add missing include to test_iterators.h
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@271074 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-27 23:43:29 +00:00
Eric Fiselier
d9343ac2e4 Fix PR27751. Add proper dependancies for install-libcxx-headers rule
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@271073 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-27 23:33:10 +00:00
Eric Fiselier
1eb744592a Fix PR27875. Parse LIBCXX_CXX_ABI_LIBRARY_PATH as a path not a string
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@271070 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-27 23:05:37 +00:00
Eric Fiselier
1f21fcd10a Guard testing of tuple extensions to make tests portable
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@271065 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-27 22:41:45 +00:00
Eric Fiselier
7515c69b11 Tolerate incorrect return type for 'isinf' and 'isnan' in tests.
Summary:
GLIBC recently removed the incorrect `int isinf(double)` and `int isnan(double)` overloads in C++11 and greater. This causes previously `XFAIL: linux`  tests to start passing.

Since there is no longer a way to 'XFAIL' the tests I choose to simply tolerate this bug.

See https://sourceware.org/bugzilla/show_bug.cgi?id=19439


Reviewers: rsmith, mclow.lists, EricWF

Subscribers: jroelofs, cfe-commits

Differential Revision: http://reviews.llvm.org/D19835

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@271060 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-27 22:19:53 +00:00
Ben Craig
5163e46afb [libcxx] Allow explicit pthread opt-in
The existing pthread detection code in __config is pretty good for
common operating systems. It doesn't allow cmake-time choices to be
made for uncommon operating systems though.

This change adds the LIBCXX_HAS_PTHREAD_API cmake flag, which turns
into the _LIBCPP_HAS_THREAD_API_PTHREAD preprocessor define. This is
a name change from the old _LIBCPP_THREAD_API_PTHREAD. The lit tests
want __config_site.in variables to have a _LIBCPP_HAS prefix.

http://reviews.llvm.org/D20573


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@270735 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-25 17:40:09 +00:00
Ben Craig
fc1962da37 Reorganize locale extension fallbacks. NFCI
The various _l locale extension functions originate from very
different places.  Some come from POSIX, some are BSD extensions,
and some are shared BSD and GLIBC extensions. This patch tries to
group the local extension reimplementations by source. This should
make it easier to make libcxx work with POSIX compliant C libraries
that lack these extensions.

The fallback locale functions are also useful on their own for other
lightweight platforms. Putting these fallback implementations in
support/xlocale should enable code sharing.

I have no access to a newlib system or an android system to build
and test with. I _do_ have access to a system without any of the _l
locale extensions though, and I was able to ensure that the new
__posix_l_fallback.h and __strtonum_fallback.h didn't have any massive
problems.

http://reviews.llvm.org/D17416


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@270213 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-20 12:58:41 +00:00
Eric Fiselier
14273e8a56 Cleanup superfluous std:: qualifiers in <type_traits>
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@269998 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-18 23:09:24 +00:00
Eric Fiselier
7995c48d7f Optimize declval for compile times. Patch from Eric Niebler.
This patch implements the C++11 version of declval without requiring a template
instantiation.

See PR27798 for more information. https://llvm.org/bugs/show_bug.cgi?id=27798


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@269991 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-18 22:23:46 +00:00
Marshall Clow
ea76b4432d Mark LWG2583 as complete. I did this a while ago, and forgot to update the table.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@269973 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-18 19:31:01 +00:00
Marshall Clow
2241cf0d5b Change the control flow in atomic_compare_exchange_strong to avoid a potential deadlock.
When you assign a shared_ptr, the deleter gets called and assigned. In this routine, the assignment happens inside a critical section, which could (potentially) lead to a deadlock, if the deleter did something wonky. Now we swap the old value with an (empty) temporary shared_ptr, and then let the temporary delete the old value when it goes out of scope (after the lock has been released).  This should fix PR#27724. Thanks to Hans Boehm for the bug report and the suggested fix.



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@269965 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-18 17:50:13 +00:00
Eric Fiselier
a3388c6bb2 Test hijacking ADL for operator& in the stream iterator constructors.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@269838 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-17 21:01:20 +00:00
Eric Fiselier
995f64c4ae Add test for r269789
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@269812 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-17 19:52:32 +00:00
Marshall Clow
d8fc1ec894 Implement LWG2576: istream_iterator and ostream_iterator should use std::addressof
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@269789 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-17 17:44:40 +00:00
Marshall Clow
7f271a0b77 Add some checking so that the TEST_HAS_XXX macros match up with the _LIBCPP_NO_HAS_XXX macros. No functional change
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@269773 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-17 14:58:09 +00:00
Marshall Clow
2c15439dd3 Implement P0030R1: Introduce a 3-Argument Overload to std::hypot
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@269772 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-17 14:52:19 +00:00
Eric Fiselier
3cc263dda1 Remove C++11 feature macros in tests. Use TEST_STD_VER instead.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@269669 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-16 17:05:14 +00:00
Marshall Clow
5d98497d0b Add a test for uniqueptr having either NULL and nullptr
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@269665 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-16 16:57:15 +00:00
Marshall Clow
eaba7bb5ac Add a couple of _LIBCPP_ASSERT calls. No functional change.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@269663 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-16 16:55:32 +00:00
Asiri Rathnayake
10a6829490 Disable LIBCXX_ENABLE_ABI_LINKER_SCRIPT for static library builds.
This option is geared towards shared library builds and causes static
library builds to fail if not explicitly disabled.

This patch fixes PR27706: https://llvm.org/bugs/show_bug.cgi?id=27706

Thanks rgoodfel@isi.edu for the catch.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@269585 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-14 23:58:11 +00:00
Marshall Clow
aee206a3a1 Apply D20014 - fix a missing return in a test. Fixes PR#27720
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@269298 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-12 14:31:35 +00:00
Eric Fiselier
25bcc0f8f8 [libcxx] Prefer C++14 over C++11 when building libc++experimental.
Summary:
Currently libc++experimental builds with C++11. This patch changes that to C++14 when supported by the compiler. Although nothing currently requires C++14 the upcoming <experimental/memory_resource> implementation would benefit from it. [1]

Note that libc++.so continues to build with C++11 and is unaffected by this change.

[1] <experimental/memory_resource> provides global resources which must exist for the entire lifetime of the program. In order to ensure that a global resource can be used during program termination there destructors must never be invoked. The only way to do this, while also allowing "constant initialization", is to use a C++14 union.


Reviewers: mclow.lists

Subscribers: pete, cfe-commits

Differential Revision: http://reviews.llvm.org/D19992

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@269070 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-10 16:17:43 +00:00
Eric Fiselier
4e69be0423 Generate code coverage for experimental libraries
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268887 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-08 23:08:50 +00:00
Eric Fiselier
8c8f0e5b65 Enable Pthread threading API on Solaris. Fix PR27677
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268860 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-07 17:05:46 +00:00
Eric Fiselier
ab46ace714 Fix memory_resource build for _LIBCPP_HAS_NO_THREADS
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268850 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-07 05:37:31 +00:00
Eric Fiselier
1354c943ad Update TS implementation status page
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268844 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-07 03:24:31 +00:00
Eric Fiselier
4db388b579 Change allocator<T>::allocate to throw length_error, not bad_alloc
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268842 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-07 03:12:24 +00:00
Eric Fiselier
dba23b499b Add experimental container alias templates for PMRs
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268841 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-07 03:09:55 +00:00
Eric Fiselier
33861da4f5 Fix one more usage of _LIBCPP_HAS_NO_EXCEPTIONS
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268839 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-07 02:33:25 +00:00
Eric Fiselier
96e4c23bf1 Fix typo it _LIBCPP_NO_EXCEPTIONS macro
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268838 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-07 02:30:21 +00:00
Eric Fiselier
257fd699fd Add <experimental/memory_resource>
Reviewers: mclow.lists, EricWF

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D20007

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268829 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-07 01:04:55 +00:00
Eric Fiselier
70487694ba Tweak --param=no_default_flags=true to still add -Ilibcxx/test/support
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268801 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-06 21:35:06 +00:00
Asiri Rathnayake
35ff03b7c2 Refactor pthread usage of libcxx.
This patch extracts out all the pthread dependencies of libcxx into the
new header __threading_support. The motivation is to make it easy to
re-target libcxx into platforms that do not support pthread.

Original patch from Fulvio Esposito (fulvio.esposito@outlook.com) - D11781

Applied with tweaks - D19412

Change-Id: I301111f0075de93dd8129416e06babc195aa936b

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268734 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-06 14:06:29 +00:00
Eric Fiselier
6637dc23f6 Fix errors in documentation
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268709 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-06 04:49:30 +00:00
Eric Fiselier
953f34fd94 Fix sphinx build. This is a temporary solution.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268614 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-05 08:12:25 +00:00
Eric Fiselier
f83eb7a8cc Try and fix sphinx build
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268613 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-05 06:30:05 +00:00
Eric Fiselier
8a7462d163 Removing some trailing whitespace
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268543 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-04 20:29:19 +00:00
Marshall Clow
360fa62a01 Fixed some spelling errors in assert messages. No functional change. Thanks to giffunip@yahoo.com for the report.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268510 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-04 15:35:50 +00:00
Eric Fiselier
03dc08c1a6 Update version numbers in docs
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268459 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 22:50:33 +00:00
Eric Fiselier
7039fa1d20 Add documentation for new experimental library
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268456 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 22:32:08 +00:00
Eric Fiselier
7da079cc12 Make check-libcxx dependant on libc++experimental if present.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268451 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 21:58:07 +00:00
Eric Fiselier
5e4698c9a6 Create new library 'libc++experimental.a' for packaging TS symbols.
Summary:
Out-of-line symbols for <experimental/...> headers are not ABI or API stable and cannot live in the 'libc++.dylib'. Currently they have nowhere to live. I would like to add a new library target `libc++experimental.a` to fix this. 

Previously I had suggested different libraries for different TS's (`libc++filesystem.a`, 'libc++LFTS.a`, ect). I no longer think this is the right approach.
Instead `c++experimental` will hold *all* TS implementations as a single monolithic library. I see two main benefits to this:

1. Users only have to know about and manually link one library.
2. It makes it easy to implement TS's with one or two out-of-line symbols. (Ex. PMRs)

`c++experimental` provides NO ABI compatibility. Symbols can freely be added/removed/changed without concern for ABI stability.
I will add documentation for this after landing this patch (but before adding anything to it).

`c++experimental` only builds as a static library. By default CMake will build/test this library but will *NOT* install it.

This patch adds the CMake and LIT logic needed to build/test the new library. Once this lands I plan on using it to implement parts of `<experimental/memory_resource>`.



Reviewers: mclow.lists

Subscribers: cfe-commits, theraven, krememek, dexonsmith, bcraig, beanz, danalbert

Differential Revision: http://reviews.llvm.org/D19856

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268443 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 21:30:18 +00:00
Chris Bieneman
135ac80a48 [CMake] Fix a copy-paste error
Based on post commit feedback from Eric Fiselier.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268401 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 16:54:20 +00:00
Eric Fiselier
a956a105fe Fix dependencies on install-libcxx CMake target
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268363 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 05:34:38 +00:00
Eric Fiselier
6aec0206da Fix PR27538. Remove __is_convertible specializations for array and function types.
This patch fixes a bunch of bugs in the fallback implementation of
is_convertible, which is used by GCC. Removing the "__is_convertible"
specializations for array/function types we fallback on the SFINAE test,
which is more correct.

See https://llvm.org/bugs/show_bug.cgi?id=27538


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268359 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 04:26:02 +00:00
Eric Fiselier
219406e77f [libcxx] [test] Replace non-Standard "atomic_flag f(false);" with Standard "atomic_flag f;"
Summary:
Replace non-Standard "atomic_flag f(false);" with Standard "atomic_flag f;" in clear tests.
Although the  value of 'f' is unspecified it shouldn't matter because these tests always call `f.test_and_set()` without checking the result, so the initial state shouldn't matter.

The test init03.pass.cpp is explicitly testing this non-Standard extension; It has been moved into the `test/libcxx` directory.

Reviewers: mclow.lists, STL_MSFT

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D19758

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268355 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 02:12:26 +00:00
Eric Fiselier
0cf277c710 Don't use std::__clz in 'test/support/hexfloat.h'.
std::__clz is a libc++ specific function so it can't be used in the test suite.
This patch implements a dumb "count leading zeros" implementation within
hexfloat itself.

This patch also fixes UB since the output of `__builtin_clz(0)` is undefined
according to the GCC docs.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268354 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 02:04:26 +00:00
Eric Fiselier
3ed38a96f8 Guard use of <unistd.h> in test.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268346 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 00:36:57 +00:00