Commit Graph

1741 Commits

Author SHA1 Message Date
Eric Fiselier
fc044a1ff2 Fix PR30979 - tuple<move_only> is constructible from move_only const&
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286774 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-13 19:54:31 +00:00
Roger Ferrer Ibanez
66350f0fb1 Protect bitset tests under libcpp-no-exceptions
Bitset tests feature a sequence of tests of increasing bitset sizes,
but these tests rely on exceptions when the bitset size is less than
50 elements.

This change adds a flag to tell whether a test should throw. If it must
throw it will be skipped under no-exceptions.

Differential Revision: https://reviews.llvm.org/D26140



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286474 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-10 16:54:55 +00:00
Roger Ferrer Ibanez
240b8c875b Protect std::experimental::optional tests under libcpp-no-exceptions
In these tests there are some paths that explicitly throw, so use
the TEST_THROW macro that was proposed for this and then skip the tests
that may enter the throwing path.

Differential Revision: https://reviews.llvm.org/D26142



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286099 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-07 08:23:59 +00:00
Stephan T. Lavavej
e619862dbf [libcxx] [test] Replace _LIBCPP_STD_VER with TEST_STD_VER.
This replaces every occurrence of _LIBCPP_STD_VER in the tests with
TEST_STD_VER. Additionally, for every affected
file, #include "test_macros.h" is being added explicitly if it wasn't
already there.

https://reviews.llvm.org/D26294

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286007 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-04 20:26:59 +00:00
Marshall Clow
f333beee2c Implement another part of P0031; adding constexpr to move_iterator
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285818 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-02 15:30:26 +00:00
Roger Ferrer Ibanez
aa138aa2a4 Remove spurious token from #endif
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285792 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-02 08:36:43 +00:00
Roger Ferrer Ibanez
a405f45fcd Protect tests for new/delete under libcpp-no-exceptions
Skip the tests that expect an exception be thrown and protect unreachable catch blocks.

Differential Revision: https://reviews.llvm.org/D26197



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285791 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-02 08:14:57 +00:00
Eric Fiselier
2c6c2b944e Fix __libcpp_is_constructible for source types with explicit conversion operators.
Previously __libcpp_is_constructible checked the validity of reference
construction using 'eat<To>(declval<From>())' but this doesn't consider
From's explicit conversion operators. This patch teaches __libcpp_is_constructible
how to handle these cases. To do this we need to check the validity
using 'static_cast<To>(declval<From>())'. Unfortunately static_cast allows
additional base-to-derived and lvalue-to-rvalue conversions, which have to be
checked for and manually rejected.

While implementing these changes I discovered that Clang incorrectly
rejects `static_cast<int&&>(declval<float&>())` even though
`int &&X(declval<float&>())` is well formed. In order to tolerate this bug
the `__eat<T>(...)` needs to be left in-place. Otherwise it could be replaced
entirely with the new static_cast implementation.

Thanks to Walter Brown for providing the test cases.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285786 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-02 03:57:34 +00:00
Roger Ferrer Ibanez
c09116009c Protect exceptional paths under libcpp-no-exceptions
These tests are of the form

try {
   action-that-may-throw
   assert(!exceptional-condition)
   assert(some-other-facts)
 } catch (relevant-exception) {
   assert(exceptional-condition)
 }

Under libcpp-no-exceptions there is still value in verifying
some-other-facts while avoiding the exceptional case. So for these tests
just conditionally check some-other-facts if exceptional-condition is
false. When exception are supported make sure that a true
exceptional-condition throws an exception

Differential Revision: https://reviews.llvm.org/D26136



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285697 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-01 15:46:16 +00:00
Roger Ferrer Ibanez
8883740456 Protect lock tests under libcpp-no-exceptions
Skip tests that expect an exception to be thrown.

Differential Revision: https://reviews.llvm.org/D26184




git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285695 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-01 15:00:16 +00:00
Roger Ferrer Ibanez
6168a5e55f Protect tests that expect an exception for an unknown std::random_device
Skip these tests under libcpp-no-exceptions.

Differential Revision: https://reviews.llvm.org/D26141



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285677 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-01 08:11:12 +00:00
Roger Ferrer Ibanez
1c0757acd1 Fix archetypes.hpp under libcpp-no-extensions and std level < 14
Under -fno-exceptions TEST_THROW becomes abort / __builtin_abort which returns
void. This causes a type mismatch in the conditional operator when testing the
library in C++98,03,11 modes.

Use a comma operator to workaround this problem.

Differential Revision: https://reviews.llvm.org/D26147



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285572 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-31 14:14:13 +00:00
Roger Ferrer Ibanez
efc9f170c9 Change from "XFAIL: libcpp-no-exceptions" to "UNSUPPORTED: libcpp-no-exceptions" tests that only check exceptions and nothing else
This is a follow up of D24562.

These tests do not check anything but exceptions, so it makes sense to mark
them as UNSUPPORTED under a library built without exceptions.

Differential Revision: https://reviews.llvm.org/D26075



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285550 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-31 08:47:53 +00:00
Eric Fiselier
eb6b13f578 Fix _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY to always have default visibility.
This prevent the symbols from being both externally available and hidden, which
causes them to be linked incorrectly. This is only a problem when the address
of the function is explicitly taken since it will always be inlined otherwise.

This patch fixes the issues that caused r285456 to be reverted, and can
now be reapplied.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285531 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-31 02:07:23 +00:00
Eric Fiselier
271a19ec19 Rewrite std::filesystem::path iterators and parser
This patch entirely rewrites the parsing logic for paths. Unlike the previous
implementation this one stores information about the current state; For example
if we are in a trailing separator or a root separator. This avoids the need for
extra lookahead (and extra work) when incrementing or decrementing an iterator.
Roughly this gives us a 15% speedup over the previous implementation.

Unfortunately this implementation is still a lot slower than libstdc++'s.
Because libstdc++ pre-parses and splits the path upon construction their
iterators are trivial to increment/decrement. This makes libc++ lazy parsing
100x slower than libstdc++. However the pre-parsing libstdc++ causes a ton
of extra and unneeded allocations when constructing the string. For example
`path("/foo/bar/")` would require at least 5 allocations with libstdc++
whereas libc++ uses only one. The non-allocating behavior is much preferable
when you consider filesystem usages like 'exists("/foo/bar/")'.

Even then libc++'s path seems to be twice as slow to simply construct compared
to libstdc++. More investigation is needed about this.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285526 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-30 23:30:38 +00:00
Eric Fiselier
8ea5d87500 Remove files missed in r285466
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285469 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-28 22:54:24 +00:00
Eric Fiselier
c457a97363 Fix test when using an installed libc++
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285392 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-28 11:01:12 +00:00
Eric Fiselier
a0b4d55133 Add more tests for optional<const T>
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285384 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-28 06:40:29 +00:00
Eric Fiselier
6994470189 Add __libcpp_version file and __libcpp_library_version function.
This patch does two seperate things. First it adds a file called
"__libcpp_version" which only contains the current libc++ version
(currently 4000). This file is not intended for use as a header. This file
is used by Clang in order to easily determine the installed libc++ version.
This allows Clang to enable/disable certain language features only when the
library supports them.

The second change is the addition of _LIBCPP_LIBRARY_VERSION macro, which
returns the version of the installed dylib since it may be different than
the headers.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285382 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-28 06:06:50 +00:00
Tim Shen
38c2a3767b [libcxx] Make regex_match backtrack when search fails
Summary:
Fixes PR19851.
alg.re.match/ecma.pass.cpp still XFAILS on linux, but after commenting out
locale-related tests, it passes. I don't have a freebsd machine to produce a
full pass.

Reviewers: mclow.lists

Subscribers: cfe-commits, emaste

Differential Revision: https://reviews.llvm.org/D26026

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285352 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-27 21:40:34 +00:00
Stephan T. Lavavej
e465ff34be [PATCH] D25483: [libcxx] [test] Fix non-Standard assumptions about how many elements are allocated
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285346 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-27 21:25:12 +00:00
Casey Carter
856947863f Cleanup nonportable behavior in tests for std::any
Fixes MS issues 63, 64, and 65.

test/std/utilities/any/any.class/any.cons/move.pass.cpp:
* "Moves are always destructive" is not a portable assumption; check with LIBCPP_ASSERT.

test/std/utilities/any/any.class/any.cons/value.pass.cpp:
* The standard does not forbid initializing std::any from any pointer-to-function type. Remove the non-conforming "DecayTag" test.

test/std/utilities/any/any.class/any.modifiers/swap.pass.cpp:
* Self-swap is not specified to perform no moves; check with LIBCPP_ASSERT.

Differential Revision: https://reviews.llvm.org/D26007



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285234 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-26 20:18:13 +00:00
Casey Carter
b035d8f064 Silence unused parameter warnings in archetypes.hpp
Reviewed at: https://reviews.llvm.org/D25958



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285213 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-26 17:22:25 +00:00
Eric Fiselier
e577a4c660 Fix nullptr tests
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285117 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-25 20:45:17 +00:00
Eric Fiselier
c4a7e9177a Fix non-portable tests for temp_directory_path(...)
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285020 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-24 20:40:35 +00:00
Eric Fiselier
04b7f3da2b Add missing include in string_view tests. Patch from Billy ONeil @ microsoft
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285012 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-24 20:11:17 +00:00
Eric Fiselier
44543930e4 Fix shadow warnings in string_view tests. Patch from STL@microsoft.com
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285011 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-24 20:10:00 +00:00
Eric Fiselier
87c6313718 Backout enabling -Wshadow until I have time to fix the breakage
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284952 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-23 22:24:11 +00:00
Eric Fiselier
6547b4fa2b Fix libc++ specific assertion in permissions(...) tests
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284945 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-23 19:14:58 +00:00
Eric Fiselier
c8e7821916 Turn on -Wshadow so I find occurances before STL does
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284944 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-23 19:01:10 +00:00
Eric Fiselier
26cbb8d03e Make make_from_tuple tests more portable. Patch from STL@microsoft.com
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284943 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-23 18:55:51 +00:00
Eric Fiselier
317120240b Fix unreferenced parameters. Patch from STL@microsoft.com
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284942 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-23 18:52:58 +00:00
Eric Fiselier
e2c4227504 Fix shadowing warning. Patch from STL@microsoft.com
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284941 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-23 18:47:58 +00:00
Tim Shen
741cb8b8e6 [libcxx] Support std::regex_constants::match_not_null
Summary: Fixes PR21597.

Reviewers: mclow.lists, EricWF

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D25595

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284881 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-21 20:41:47 +00:00
Marshall Clow
464abc8aee Adding a missing constexpr test for reverse_iterator operator[].
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284731 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-20 14:57:34 +00:00
Eric Fiselier
6d36efa497 Attempt to workaround XPASS for aligned allocation tests
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284691 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-20 03:31:07 +00:00
Marshall Clow
4414a6a911 Implement constexpr support for reverse_iterator. Reviewed as https://reviews.llvm.org/D25534
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284602 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-19 15:12:50 +00:00
Eric Fiselier
4035b668e6 Make any_cast<void()>(nullptr) compile
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284333 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-16 11:56:38 +00:00
Eric Fiselier
fcdb3f77e8 Update LWG 2767 and add test case
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284324 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-16 03:45:06 +00:00
Eric Fiselier
46c0fcb2b3 Update status for std::optional LWG issues and fix an optional SFINAE bug
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284323 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-16 03:21:35 +00:00
Eric Fiselier
846edfb837 Update issue status for LWG 2744
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284322 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-16 02:51:50 +00:00
Eric Fiselier
100a39d169 Update issue status for LWG 2768 and 2769
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284321 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-16 01:43:43 +00:00
Eric Fiselier
1e1bbc7437 Implement LWG 2712 and update other issues status
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284318 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-16 00:47:59 +00:00
Eric Fiselier
451f34db16 Implement LWG 2681 and 2682
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284316 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-16 00:29:22 +00:00
Eric Fiselier
25dc5bdb88 Implement LWG 2672.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284314 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-15 23:05:04 +00:00
Eric Fiselier
620a9a5ecf Implement modified LWG 2665
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284313 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-15 22:37:42 +00:00
Eric Fiselier
4ca4e5038b Implement LWG2664 and update its status
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284310 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-15 21:29:44 +00:00
Eric Fiselier
9ffd1d56b4 Prevent new/delete replacement tests from being optimized away.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284289 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 22:47:08 +00:00
Eric Fiselier
e630058e90 Clarify XFAIL comments
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284282 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 21:30:35 +00:00
Eric Fiselier
78c020bd78 Work around Clang driver segfault when --coverage is used with -c and /dev/null
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284225 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-14 10:30:33 +00:00