Commit Graph

2277 Commits

Author SHA1 Message Date
Eric Fiselier
ff62475dcd [libcxx] Fix PR24075, PR23841 - Add scoped_allocator_adaptor::construct(pair<T, U>*, ...) overloads.
Summary:
For more information see:

* https://llvm.org/bugs/show_bug.cgi?id=23841
* https://llvm.org/bugs/show_bug.cgi?id=24075

I hope you have as much fun reviewing as I did writing these insane tests!

Reviewers: mclow.lists, AlisdairM, EricWF

Subscribers: AlisdairM, Potatoswatter, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@289710 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-14 21:29:29 +00:00
Eric Fiselier
a2cd270943 Enable the -Wsign-compare warning to better support MSVC
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@289363 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-11 05:31:00 +00:00
Eric Fiselier
bf3b8e226e Fix missing const on set::count. Patch from Andrey Khalyavin
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@289204 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-09 12:17:31 +00:00
Eric Fiselier
f2f3637d40 Fix PR27374 - Remove the implicit reduced-arity-extension in tuple.
This patch removes libc++'s tuple extension which allowed it to be
constructed from fewer initializers than elements; with the remaining
elements being default constructed. However the implicit version of
this extension breaks conforming code. For example:

    int fun(std::string);
    int fun(std::tuple<std::string, int>);
    int x = fun("hello"); // ambigious

Because existing code may already depend on this extension it can be re-enabled
by defining _LIBCPP_ENABLE_TUPLE_IMPLICIT_REDUCED_ARITY_EXTENSION.

Note that the explicit version of this extension is still supported,
although it's somewhat less useful than the implicit one.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@289158 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-08 23:57:08 +00:00
Eric Fiselier
014f0b0d36 Fix PR30323: numeric_limits<T>::max_digits10 when using 16 bit ints.
Summary: Also see https://llvm.org/bugs/show_bug.cgi?id=30323

Reviewers: mclow.lists

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@289029 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-08 07:30:01 +00:00
Eric Fiselier
183fafa507 Fix _LIBCPP_VERSION tests with modules on Darwin
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@289028 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-08 06:37:41 +00:00
Eric Fiselier
a683dc04e1 Revert r288787: Add missing stdbool.h module.
Reverting because I didn't properly test this patch. Although it's probably
correct to add a stdbool_h module I thought the change fixed more than it did.
I'll re-commit after more investigation.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288789 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-06 09:48:32 +00:00
Eric Fiselier
1d801988a7 Add missing stdbool.h module. The test suite now passes on OS X with modules
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288787 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-06 09:41:50 +00:00
Eric Fiselier
7a6fabad1c Fix stdio module build on OS X
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288778 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-06 07:40:46 +00:00
Eric Fiselier
74c9d6aa0d Fix C++03 modules build
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288755 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-06 01:34:24 +00:00
Eric Fiselier
7ba695e32c Add module definitions for <experimental/foo> headers
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288735 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-05 23:55:34 +00:00
Eric Fiselier
72a5c771b8 Add module definitions for string_view
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288733 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-05 23:53:23 +00:00
Eric Fiselier
045b27e848 Add modules for any/optional/variant
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288730 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-05 23:33:19 +00:00
Eric Fiselier
bca6de0e4e Adjust libc++ test infastructure to fully support modules
This patch overhalls the libc++ test format/configuration in order to fully support modules. By "fully support" I mean get almost all of the tests passing. The main hurdle for doing this is handling tests that `#define _LIBCPP_FOO` macros to test a different configuration. This patch deals with these tests in the following ways:

1. For tests that define single `_LIBCPP_ABI_FOO` macros have been annotated with `// MODULES_DEFINES: _LIBCPP_ABI_FOO`. This allows the test suite to define the macro on the command line so it uses a different set of modules.
2. Tests for libc++'s debug mode (which define custom `_LIBCPP_ASSERT`) are automatically detected by the test suite and are compiled and run with modules disabled.

This patch also cleans up how the `CXXCompiler` helper class handles enabling/disabling language features.

NOTE: This patch uses `LIT` features which were only committed to LLVM today. If this patch breaks running the libc++ tests you probably need to update LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288728 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-05 23:16:07 +00:00
Shoaib Meenai
c6d8e8a9cc [libc++] Add _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS
It's useful to be able to disable visibility annotations entirely; for
example, if we're building libc++ static to include in another library,
and we don't want any libc++ functions getting exported out of that
library. This is a generalization of _LIBCPP_DISABLE_DLL_IMPORT_EXPORT.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288690 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-05 19:40:12 +00:00
Eric Fiselier
0c2ffb6670 Choose better hash values for std::monostate and valueless variants.
Previously these hashes were 0 and -1 respectively. These seem like common
sentinel values and should be avoided to prevent needless collisions.

This patch changes those values to different arbitrary numbers, which should
hopefully cause less collisions. Because I couldn't help myself I choose the
fundamental constants for gravity and the speed of light.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288623 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-04 21:37:37 +00:00
Eric Fiselier
81b7f63174 Make make_exception_ptr abort with -fno-exceptions
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288575 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-03 03:22:11 +00:00
Eric Fiselier
5b0fa443aa Fix <variant> w/o exception support
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288571 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-03 01:58:07 +00:00
Eric Fiselier
90ade0a661 Fix -Wshadow warnings and enable warnings by default for C++ >= 11
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288564 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-03 01:21:40 +00:00
Eric Fiselier
a2ff798745 Fix C++03 build
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288555 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-02 23:41:18 +00:00
Eric Fiselier
120401a4e0 Make variant's index part of the hash value
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288554 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-02 23:38:31 +00:00
Eric Fiselier
4975ccc637 Fix generated warnings in <variant>
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288552 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-02 23:17:33 +00:00
Eric Fiselier
cab2af8418 Implement C++17 <variant>. Patch from Michael Park!
This patch was reviewed as https://reviews.llvm.org/D23263.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288547 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-02 23:00:05 +00:00
Aditya Kumar
4299795816 [libcxx] remove unused code
The macro _LIBCPP_UNROLL_LOOPS isn't used anywhere
so the code was dead.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288143 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-29 14:43:42 +00:00
Marshall Clow
afa9b590b2 Implement conjuntion/disjuntion/negation for LFTS v2. Same code and tests for the ones in std::
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287988 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-26 18:45:03 +00:00
Marshall Clow
70e6a8d552 Implement the 'detection idiom' from LFTS v2
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287981 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-26 15:49:40 +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
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
fb6164cdad Allow libc++ to use modules in C++03.
Libc++ internal uses <atomic> in C++03 code but the module map forbids its use.
This causes the libc++ 'std' module to fail to build in C++03.

This patch removes the requirement to fix this issue.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287693 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-22 20:15:39 +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
faa8312d51 Cleanup module.modulemap
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287687 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-22 20:00:21 +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
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
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
Eric Fiselier
8c57032b52 Remove _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
libc++ no longer supports C++11 compilers that don't implement `= default`.
This patch removes all instances of the feature test macro
_LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS as well as the potentially dead code it hides.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287321 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-18 06:42:17 +00:00
Shoaib Meenai
f66194bce3 [libc++] Fix preprocessor guard for overload declaration
Fix a typo in the conditional.  Caught by going through list of removed
symbols when building with hidden visibility.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287309 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-18 04:31:09 +00:00
Eric Fiselier
a93ebeca94 Workaround compilers w/o C++1z inline variables
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287255 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-17 20:08:43 +00:00
Eric Fiselier
8d33526db2 Implement P0504R0: Revisiting in-place tag types for any/optional/variant
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287250 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-17 19:24:04 +00:00
Shoaib Meenai
e6479bc783 [libc++] Introduce _LIBCPP_OVERRIDABLE_FUNC_VIS
This is a generalization of `_LIBCPP_NEW_DELETE_VIS`; the new macro name
captures the semantics better, and also allows us to get rid of the
`_WIN32` check in `include/new`. No functional change.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287164 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-16 22:18:10 +00:00
Eric Fiselier
18e2c824b4 Fix non-reserved name usage
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287080 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-16 04:45:32 +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
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
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
Eric Fiselier
5e000c6a82 Add check-cxx-abilist target when supported.
This patch adds a `check-cxx-abilist` target which verifies the libc++.so ABI
when the current build configuration matches the configuration used to generate
the ABI lists.

In order to make this change `HandleOutOfTreeLLVM.cmake` needed to be modified
to include `LLVMConfig.cmake` so that `TARGET_TRIPLE` is defined. Hopefully
the changes needed to accommodate this won't break existing build
configurations.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286789 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-14 02:43:12 +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
Shoaib Meenai
a43c2e769a [libc++] Remove unnecessary MSVCRT exclusions
Visual Studio 2013 and up have these functions, and we don't need to
support older versions.

There are some remaining _LIBCPP_MSVCRT exclusions which are present on
Visual Studio 2015 but not 2013. Those will be addressed in a follow-up.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286202 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-08 03:31:42 +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
Eric Fiselier
863388e8d8 Fix GCC test failure caused by manually defining _LIBCPP_HAS_NO_VARIADICS
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285788 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-02 05:08:58 +00:00