Commit Graph

2632 Commits

Author SHA1 Message Date
Stephan T. Lavavej
9a65a47871 [libcxx] [test] D27015: Fix MSVC warning C4018 "signed/unsigned mismatch", part 3/12.
Change unsigned to int in parameters.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287823 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-23 22:02:16 +00:00
Stephan T. Lavavej
388c2a8e68 [libcxx] [test] D27014: Fix MSVC warning C4018 "signed/unsigned mismatch", part 2/12.
Add static_cast<std::size_t> when comparing int to std::size_t.

Also, include <cstddef> when it wasn't already being included.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287822 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-23 22:01:58 +00:00
Stephan T. Lavavej
a9bcd3dae8 [libcxx] [test] D27013: Fix MSVC warning C4018 "signed/unsigned mismatch", part 1/12.
Change loop indices from int to std::size_t.

Also, include <cstddef> when it wasn't already being included.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287820 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-23 22:01:19 +00:00
Eric Fiselier
e041941007 Fix __hash_table::max_size() on 32 bit systems
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287749 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-23 09:16:12 +00:00
Casey Carter
80888fa0fe Don't "LIBCPP_ONLY(stuff;)" at namespace scope.
Differential review: https://reviews.llvm.org/D27029

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287732 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-23 01:44:53 +00:00
Eric Fiselier
ef3060ef96 [libcxx] Fix max_size() across all containers
Summary: The `max_size()` method of containers should respect both the allocator's reported `max_size` and the range of the `difference_type`. This patch makes all containers choose the smallest of those two values.

Reviewers: mclow.lists, EricWF

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287729 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-23 01:18:56 +00:00
Eric Fiselier
0373708cdc Add <variant> tests but disable them for libc++
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287728 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-23 01:02:51 +00:00
Eric Fiselier
6010dc84c6 Attempt to fix stdint/cstdint modules try 2
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287690 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-22 20:05:19 +00:00
Eric Fiselier
8b4cb5ba98 Revert r287435 because of OS X test failures
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287531 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-21 11:26:10 +00:00
Eric Fiselier
487bc7e0c8 Mark variadic lock guard tests as XFAIL with modules, since they have to define macros to expose the new ABI
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287513 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-21 01:10:52 +00:00
Eric Fiselier
388ffe1db1 Adjust uses_alloc_types helpers for later changes
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287512 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-21 00:41:32 +00:00
Eric Fiselier
6f7f0b8530 Fix stdint/cstdint modules
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287435 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-19 03:29:03 +00:00
Eric Fiselier
887c80ec10 Mark test as unsupported in C++03
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287417 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-19 01:38:00 +00:00
Eric Fiselier
850745db9e [libcxx] Implement locale.h to fix modules build
Summary:
Because `locale.h` isn't part of the libc++ modules the class definitions it provides are exported as part of `__locale` (since it happens to be build first). This breaks `<clocale>` which exports `std::lconv` without including `<__locale>`.

This patch implements `locale.h` to fix this issue, it also adds support for testing libc++ with modules.




Reviewers: mclow.lists, rsmith, EricWF

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287413 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-19 01:14:15 +00:00
Stephan T. Lavavej
2917004aed [libcxx] [test] D26812: In random tests, use real static_asserts and silence a warning.
In C++11 mode and newer, use real static_asserts.
In C++03 mode, min() and max() aren't constexpr, so use plain asserts.

One test triggers MSVC's warning C4310 "cast truncates constant value".
The code is valid, and yet the warning is valid, so I'm silencing it
through push-disable-pop.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287391 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-18 22:45:32 +00:00
Stephan T. Lavavej
0252201f9e [libcxx] [test] D26816: Fix non-Standard assumptions when testing sample().
sample() isn't specified with a reproducible algorithm, so expecting
exact output is non-Standard. Mark those tests with LIBCPP_ASSERT.

In test_small_population(), we're guaranteed to get all of the elements,
but not necessarily in their original order. When PopulationCategory is
forward, we're guaranteed stability (and can therefore test equal()).
Otherwise, we can only test is_permutation(). (As it happens, both libcxx
and MSVC's STL provide stability in this scenario for input-only iterators.)

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287383 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-18 21:54:43 +00:00
Stephan T. Lavavej
3ee8025384 [libcxx] [test] D26815: Fix an assumption about the state of moved-from std::functions.
The Standard doesn't provide any guarantees beyond "valid but unspecified" for
moved-from std::functions. libcxx moves from small targets and leaves them
there, while MSVC's STL empties out the source. Mark these assertions as
libcxx-specific.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287382 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-18 21:54:38 +00:00
Stephan T. Lavavej
cb9d881ca0 [libcxx] [test] D26813: allocator<const T> is non-Standard.
N4582 17.6.3.5 [allocator.requirements] says that allocators are given
cv-unqualified object types, and N4582 20.9.9 [default.allocator]
implies that allocator<const T> is ill-formed (due to colliding
address() overloads). Therefore, tests for allocator<const T>
should be marked as libcxx-specific (if not removed outright).

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287381 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-18 21:54:31 +00:00
Eric Fiselier
c0ccadbd90 Remove files missed in r287250
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287251 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-17 19:24:34 +00:00
Eric Fiselier
77dabb302b Test changes for P0504R0 "Revisiting in-place tag types for any/optional/variant". Patch from Casey Carter
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287249 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-17 19:23:35 +00:00
Eric Fiselier
3dd27eb62c Fix -verify tests for older ccache versions
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287109 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-16 14:48:42 +00:00
Justin Lebar
efd039a62e [libcxx] Mark xonstexpr-fns.pass.cpp as XFAIL: gcc.
This fails with gcc because __builtin_isnan and friends, which
libcpp_isnan and friends call, are not themselves constexpr-evaluatable.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287041 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-15 22:03:29 +00:00
Justin Lebar
bb835ac64d [CUDA] Mark __libcpp_{isnan,isinf,isfinite} as constexpr.
Summary:
This makes these functions available on host and device, which is
necessary to compile <complex> for the device.

Reviewers: hfinkel, EricWF

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287012 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-15 19:15:57 +00:00
Vedant Kumar
e3cb222597 Revert "P0503R0, adopted in Issaquah, rewords some requirements on nullptr_t and istream_iterator. No code changes were needed, but I updated a few tests. Also resolved P0509 and P0521, which required no changes to the library or tests."
This reverts commit r286884, because it breaks the Xcode 7 builders:

  http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-expensive/1583

Here is a PR that tracks the issue:
https://llvm.org/bugs/show_bug.cgi?id=31016

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287004 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-15 18:48:36 +00:00
Stephan T. Lavavej
dd8b03ec4c [libcxx] [test] D26627: Fix ordering assumptions in unordered container tests.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286984 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-15 17:00:38 +00:00
Stephan T. Lavavej
dd3313c917 [libcxx] [test] D26625: future_error::what() is implementation-defined.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286983 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-15 17:00:32 +00:00
Stephan T. Lavavej
0b2e1c23fb [libcxx] [test] D26624: Fix bucket_count() assumptions.
With a max_load_factor of 1.0, the only guarantee is that
bucket_count() >= size(). (Note: setting max_load_factor without
rehashing isn't supposed to affect this, because setting
max_load_factor is currently specified to be constant time.)

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286982 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-15 17:00:24 +00:00
Marshall Clow
49721a90e5 Missed one of the try blocks the first time :-(. Thanks to Renato for the heads up.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286932 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-15 05:03:22 +00:00
Marshall Clow
506f7fcee5 P0503R0, adopted in Issaquah, rewords some requirements on nullptr_t and istream_iterator. No code changes were needed, but I updated a few tests. Also resolved P0509 and P0521, which required no changes to the library or tests.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286884 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-14 20:41:17 +00:00
Marshall Clow
a4163bce6a Missed a test with exceptions disabled earlier. Oops.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286883 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-14 20:38:43 +00:00
Marshall Clow
3d7c49b7b0 Implement P0516: 'Clarify That shared_future’s Copy Operations have Wide Contracts' which was adopted last week in Issaquah
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286877 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-14 19:58:05 +00:00
Marshall Clow
7817e1435e Make one of the new tests fail correctly on pre-C++17 systems
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286872 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-14 19:35:34 +00:00
Marshall Clow
5ec20dfb48 Implement P0510 'Make future_error Constructible' adopted in Issaquah
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286864 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-14 18:56:24 +00:00
Marshall Clow
db7fa111ab Fixes for LWG 2598, 2686, 2739, 2742, 2747, and 2759, which were adopted last week in Issaquah
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286858 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-14 18:22:19 +00:00
Stephan T. Lavavej
45e692539c [libcxx] [test] D26314: Fix MSVC warning C4189 "local variable is initialized but not referenced".
test/std/depr/depr.c.headers/inttypes_h.pass.cpp
test/std/input.output/file.streams/c.files/cinttypes.pass.cpp
test/std/input.output/iostream.forward/iosfwd.pass.cpp
Add test() to avoid a bunch of void-casts, although we still need a few.

test/std/input.output/iostream.format/quoted.manip/quoted.pass.cpp
skippingws was unused (it's unclear to me whether this was mistakenly copy-pasted from round_trip() below).

test/std/localization/locale.categories/category.collate/locale.collate/types.pass.cpp
test/std/localization/locale.categories/category.ctype/facet.ctype.special/types.pass.cpp
test/std/localization/locale.categories/category.ctype/locale.codecvt/types_char.pass.cpp
test/std/localization/locale.categories/category.ctype/locale.codecvt/types_wchar_t.pass.cpp
test/std/localization/locale.categories/category.ctype/locale.ctype/types.pass.cpp
test/std/localization/locale.categories/facet.numpunct/locale.numpunct/types.pass.cpp
test/std/localization/locales/locale.global.templates/use_facet.pass.cpp
When retrieving facets, the references are unused.

test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long.pass.cpp
test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_unsigned_long.pass.cpp
"std::ios_base::iostate err = ios.goodbit;" was completely unused here.

test/std/localization/locale.categories/category.time/locale.time.get/time_base.pass.cpp
test/std/numerics/c.math/ctgmath.pass.cpp
test/std/numerics/rand/rand.device/entropy.pass.cpp
test/std/numerics/rand/rand.device/eval.pass.cpp
test/std/strings/basic.string/string.modifiers/string_copy/copy.pass.cpp
test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eof.pass.cpp
test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eof.pass.cpp
test/std/thread/futures/futures.promise/dtor.pass.cpp
test/std/thread/futures/futures.task/futures.task.members/dtor.pass.cpp
test/std/thread/thread.condition/thread.condition.condvar/wait_for_pred.pass.cpp
These variables are verifying types but are otherwise unused.

test/std/strings/basic.string/string.capacity/reserve.pass.cpp
old_cap was unused (it's unclear to me whether it was intended to be used).

test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq.pass.cpp
test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp
test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp
test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp
test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp
test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq.pass.cpp
test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/lt.pass.cpp
These tests contained unused characters.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286847 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-14 17:35:14 +00:00
Roger Ferrer Ibanez
897956ebcd Protect std::ios tests under libcpp-no-exceptions
Skip tests that expect an exception be thrown. Also add
some missing asserts in the original test.

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



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286823 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-14 13:44:50 +00:00
Roger Ferrer Ibanez
70e4c503de Protect nested-exceptions tests under no-exceptions
Differential Revision: https://reviews.llvm.org/D26458



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286813 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-14 11:00:28 +00:00
Roger Ferrer Ibanez
bc464e50e9 Update tests for strings conversions under libcpp-no-exceptions
Differential Revision: https://reviews.llvm.org/D26139



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286812 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-14 10:44:26 +00:00
Roger Ferrer Ibanez
d56adc690b Protect smart-pointer tests under no exceptions
Skip tests that expect an exception be thrown under no-exceptions.

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



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286809 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-14 10:27:56 +00:00
Eric Fiselier
6e467a8987 Fix GCC libc++abi build
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286783 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-13 22:27:00 +00:00
Eric Fiselier
f9a20c2c38 Implement LWG 2770 - Make tuple_size<T> defined for all T
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286779 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-13 20:43:50 +00:00
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