Commit Graph

2907 Commits

Author SHA1 Message Date
Eric Fiselier
b3b66a4d81 Document XFAIL's with the relevent bug number
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@302213 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-05 05:19:21 +00:00
Eric Fiselier
29514913dd Fix test failure with GCC 4.9
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@302182 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-04 19:13:28 +00:00
Mehdi Amini
907c1196a7 Add markup for libc++ dylib availability
Libc++ is used as a system library on macOS and iOS (amongst others). In order
for users to be able to compile a binary that is intended to be deployed to an
older version of the platform, clang provides the
availability attribute <https://clang.llvm.org/docs/AttributeReference.html#availability>_
that can be placed on declarations to describe the lifecycle of a symbol in the
library.

See docs/DesignDocs/AvailabilityMarkup.rst for more information.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@302172 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-04 17:08:54 +00:00
Casey Carter
49abbf545e [test] Name the local variable in the C1XX implementation of DoNotOptmize
Differential Revision: https://reviews.llvm.org/D32510

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@302162 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-04 15:54:09 +00:00
Casey Carter
d252306885 [test] variant: enable constexpr construction tests on MSVC STL
* Add a new macro _MSVC_STL_VER to detect when the MSVC STL is being tested
* Workaround C1XX __is_trivially_copyable bug

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@302158 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-04 15:32:54 +00:00
Stephan T. Lavavej
559442652c [libcxx] [test] Strip trailing whitespace. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@302105 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-04 01:43:58 +00:00
Stephan T. Lavavej
bd0685fed0 [libcxx] [test] In msvc_stdlib_force_include.hpp, use _HAS_CXX17 to set TEST_STD_VER.
_HAS_CXX17 indicates whether MSVC's STL is in C++17 mode.

In MSVC there's a distinction between CRT headers like stdlib.h and STL headers
like cstdlib. Only the STL headers drag in yvals.h, our internal STL-wide header
that defines internal macros like _HAS_CXX17.

_HAS_CXX17 is an MSVC STL library macro, unconditionally defined. We centralize
everything on this, because we have to ask different questions to determine
whether C1XX, EDG, or Clang is in 14 or 17 mode, and we additionally permit
users to override the detection in one way (it's okay to ask for 17 from the
compiler, but only 14 from the libs, at least for the moment; only noexcept
in the type system will give us a headache).

As this header is for testing MSVC's STL, we can assume _HAS_CXX17 is defined.

Fixes D32726.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@302104 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-04 01:35:11 +00:00
Duncan P. N. Exon Smith
5df171df50 cmath: Skip Libc for integral types in isinf, etc.
For std::isinf, the standard requires effectively calling isinf as
double from Libc for integral types. But integral types are never
infinite; we don't need to call Libc to return false.

Also short-circuit other functions where Libc won't have interesting
answers: signbit, fpclassify, isfinite, isnan, and isnormal.

I added correctness tests for integral types since we're no longer
deferring to Libc.

In review it was pointed out that in future revisions of the C++
standard we may add more types to std::is_arithmetic (e.g.,
std::is_fixed_point).  I'll leave it to a future commit to hack this to
allow using math functions on those.  We'll need to change things like
__libcpp_fpclassify anyway, so I'm not sure anything here would really
be future-proof.

https://reviews.llvm.org/D31561
rdar://problem/31361223

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@301060 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-21 23:14:55 +00:00
Casey Carter
fba865a217 Expand test coverage for LWG2857
* Cover optional's emplace-from-initializer_list overload

* Verify that any::emplace and optional::emplace return a reference to the correct type even for throwing cases.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@301055 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-21 22:38:59 +00:00
Eric Fiselier
9f6e23c7c9 update XFAIL comments with more details
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300944 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-21 03:09:40 +00:00
Eric Fiselier
c0574ee051 Mark exception_ptr tests as XFAIL on Windows for now
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300942 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-21 02:13:33 +00:00
Eric Fiselier
c94dd0a571 XFAIL Windows test failures under test/libcxx
This patch XFAIL's a number of tests under test/libcxx when on Windows.
These failures need more investigation or patches to either Clang or libc++
but for now we don't want them to prevent the bot from going green.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300941 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-21 01:48:02 +00:00
Billy Robert O'Neal III
aa22e515ac Resolve unused local typedef warning in test.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300937 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-21 01:10:04 +00:00
Eric Fiselier
fbca5e0547 Fix tests for extended noexcept in the container adaptors tests
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300652 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-19 02:07:12 +00:00
Eric Fiselier
869c5adc90 Cleanup _LIBCPP_HAS_NO_<c++11-feature> in support headers and final tests
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300637 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-19 01:02:49 +00:00
Eric Fiselier
d311b3c55a Cleanup _LIBCPP_HAS_NO_<c++11-feature> in the utilities library
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300635 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-19 00:56:32 +00:00
Eric Fiselier
3e92897754 Cleanup _LIBCPP_HAS_NO_<c++11-feature> in the string library.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300633 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-19 00:28:44 +00:00
Eric Fiselier
97db517a49 Cleanup _LIBCPP_HAS_NO_<c++11-feature> macros in the numeric tests and headers
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300632 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-19 00:23:45 +00:00
Eric Fiselier
d89c715f29 Cleanup _LIBCPP_HAS_NO_<c++11-features> macro usage in regex
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300627 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-18 23:42:15 +00:00
Eric Fiselier
e915b5c1f2 Cleanup _LIBCPP_HAS_NO_<c++11-feature> in the input.output library
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300626 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-18 23:38:41 +00:00
Eric Fiselier
6b17a7ba2c Cleanup _LIBCPP_HAS_NO_<c++11-feature> in algorithm
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300625 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-18 23:26:47 +00:00
Eric Fiselier
82810a6cef Cleanup _LIBCPP_HAS_NO_<c++11-feature> macros for std::initializer_list
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300623 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-18 23:09:36 +00:00
Eric Fiselier
690d999934 Cleanup _LIBCPP_HAS_NO_<c++11-feature> macros in thread.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300622 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-18 23:05:08 +00:00
Eric Fiselier
1ae14a374d Cleanup _LIBCPP_HAS_NO_<c++11-feature> in std::unordered_map and std::unordered_multimap
This completes the cleanup of the containers, at least within the tests.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300620 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-18 22:50:56 +00:00
Eric Fiselier
6cdc049a90 Cleanup _LIBCPP_HAS_NO_<c++11-feature> macros in std::unordered_set and std::unordered_multiset
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300619 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-18 22:37:32 +00:00
Eric Fiselier
a8d1b917ee Cleanup _LIBCPP_HAS_NO_<c++11-feature> for std::queue and std::priority_queue.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300604 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-18 21:23:18 +00:00
Eric Fiselier
7162dceba5 Cleanup _LIBCPP_HAS_NO_<c++11-feature> macro uses in std::stack.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300602 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-18 21:16:26 +00:00
Eric Fiselier
ce924dce57 Cleanup _LIBCPP_HAS_NO_<c++11-feature> macros in std::map and std::multimap
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300600 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-18 21:08:06 +00:00
Eric Fiselier
a3de1e063a Cleanup _LIBCPP_HAS_NO_<c++11-feature> for std::set and std::multiset
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300595 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-18 20:58:03 +00:00
Casey Carter
21d02bea58 [test] Silence another unused-typedef warning
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300581 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-18 20:04:39 +00:00
Casey Carter
6f448f6943 [test] Silence unused parameter/typedef warnings
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300575 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-18 18:44:33 +00:00
Billy Robert O'Neal III
937aecfb3d Allow a standard library to implement conditional noexcept for optional and unique_ptr hash functions.
These tests were unconditionally asserting that optional and unique_ptr declare throwing hashes, but MSVC++ implements conditional noexcept forwarding that of the underlying hash function. As a result we were failing these tests but there's nothing forbidding strengthening noexcept in that way.

Changed the ASSERT_NOT_NOEXCEPT asserts to use types which themselves have non-noexcept hash functions.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300516 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-18 00:19:50 +00:00
Eric Fiselier
7e698523da Fix passing incorrectly value-category when constructing unique_ptr's deleter
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300489 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-17 20:20:27 +00:00
Casey Carter
634a2b535f [optional] Update synopsis for LWG2934
(comment-only change)

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300488 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-17 20:15:16 +00:00
Marshall Clow
07d8458932 Sigh. Once again forgot about the 'no exceptions' bots.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300451 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-17 14:18:44 +00:00
Marshall Clow
5e1df5e170 Mark LWG#2853 as complete. No code changes required, but added a couple of extra tests
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300449 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-17 13:19:14 +00:00
Eric Fiselier
1cbdb0cb0e Cleanup one more <forward_list> test
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300417 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-16 04:05:15 +00:00
Eric Fiselier
ed67bb6007 Replace _LIBCPP_HAS_NO_<C++03 feature> with _LIBCPP_CXX03_LANG in <forward_list>
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300415 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-16 04:02:01 +00:00
Eric Fiselier
55ff80ecac Replace _LIBCPP_HAS_NO_<C++03 feature> with _LIBCPP_CXX03_LANG in <list>
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300414 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-16 03:45:35 +00:00
Eric Fiselier
48503005c3 Replace _LIBCPP_HAS_NO_<C++03 feature> with _LIBCPP_CXX03_LANG in deque
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300413 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-16 03:17:01 +00:00
Eric Fiselier
6c26be6c87 Replace _LIBCPP_HAS_NO_<C++03 feature> with _LIBCPP_CXX03_LANG in <array>
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300412 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-16 02:50:40 +00:00
Eric Fiselier
ffaa304088 Workaround Clang bug regarding template template parameters
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300411 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-16 02:47:46 +00:00
Eric Fiselier
ad421ef159 Replace _LIBCPP_HAS_NO_<C++03 feature> with _LIBCPP_CXX03_LANG in vector.
This patch cleans up all usages of the following feature test macros inside
<vector> and its tests:

* _LIBCPP_HAS_NO_RVALUE_REFERENCES
* _LIBCPP_HAS_NO_VARIADICS
* _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS

Where needed the above guards were replaced with _LIBCPP_CXX03_LANG.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300410 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-16 02:40:45 +00:00
Eric Fiselier
a4fd0c9d61 Overhaul unique_ptr - Implement LWG 2801, 2905, 2520.
This patch overhauls both specializations of unique_ptr while implementing
the following LWG issues:

* LWG 2801 - This issue constrains unique_ptr's constructors when the deleter type
  is not default constructible. Additionally it adds SFINAE conditions
  to unique_ptr<T[]>::unique_ptr(Up).

* LWG 2905 - This issue reworks the unique_ptr(pointer, /* see below */ deleter)
  constructors so that they correctly SFINAE when the deleter argument cannot
  be used to construct the stored deleter.

* LWG 2520 - This issue fixes initializing unique_ptr<T[]> from nullptr.
  Libc++ had previously implemented this issue, but the suggested resolution
  still broke initialization from NULL. This patch re-works the
  unique_ptr<T[]>(Up, deleter) overloads so that they accept NULL as well
  as nullptr.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300406 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-16 01:51:04 +00:00
Eric Fiselier
98d9a858da Implement LWG 2857 for variant. Tests from Casey Carter @ Microsoft.
Also mark LWG 2857 as complete, since the changes to optional and
any were completed by Marshall earlier.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300403 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-15 19:32:02 +00:00
Eric Fiselier
6ad335bfc0 Simplify test helper
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300399 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-15 12:05:11 +00:00
Eric Fiselier
622c7d5846 Fix PR32642 - string::insert and string::append don't work with move_iterator.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300397 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-15 06:49:02 +00:00
Eric Fiselier
81f58e5052 Rewrite and cleanup unique_ptr tests.
This patch almost entirely rewrites the unique_ptr tests. There are a couple
of reasons for this:

A) Most of the *.fail.cpp tests were either incorrect or could be better written
  as a *.pass.cpp test that uses <type_traits> to check if certain operations
  are valid (Ex. Using static_assert(!std::is_copy_constructible_v<T>) instead
  of writing a failure test).

B) [unique.ptr.runtime] has very poor test coverage. Many of the constructors
  and assignment operators have to tests at all. The special members that have
  tests have very few test cases and are typically way out of date.

C) The tests for [unique.ptr.single] and [unique.ptr.runtime] are largely
  duplicates of each other. This means common requirements have two different
  sets of tests in two different test files. This makes the tests harder to
  maintain than if there was a single copy.

To address (A) this patch changes almost all of the *.fail.cpp tests into
.pass.cpp tests using type traits; Allowing the *.fail.cpp tests to be removed.

The address (B) and (C) the tests for [unique.ptr.single] and [unique.ptr.runtime]
have been combined into a single directory, allowing both specializations to share
common tests. Tests specific to the single/runtime specializations are given the
suffix "*.single.pass.cpp" or "*.runtime.pass.cpp".

Finally the unique.ptr test have been moved into the correct directory according
to the standard. Specifically they have been removed from "utilities/memory" into
"utilities/smartptr".

PS. This patch also adds newly written tests for upcoming unique_ptr changes/fixes.
However since these tests don't currently pass they are guarded by the macro
TEST_WORKAROUND_UPCOMING_UNIQUE_PTR_CHANGES. This allows other STL's to validate
the tests before libc++ implements the changes. The relevant libc++ changes should
land in the next week.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300388 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-15 05:28:06 +00:00
Marshall Clow
059256914c Remove the binders from C++17. Reviewed as https://reviews.llvm.org/D31769
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300232 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-13 18:25:32 +00:00
Marshall Clow
6403571b40 Implement LWG#2855 - made easy by previous refactoring
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300218 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-13 16:57:42 +00:00