Commit Graph

4430 Commits

Author SHA1 Message Date
Stephan T. Lavavej
6e76840323 [libcxx] [test] Remove an unused local typedef in enable_shared_from_this.pass.cpp.
Trivial change, committed without review.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@309322 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-27 21:16:37 +00:00
Marshall Clow
1fae624dcf Disable the deduction guide test I added in 309296 for the moment, while I figure out which compilers don't support deduction guides
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@309307 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-27 18:47:35 +00:00
Marshall Clow
f226a28d61 Implement P0739R0: 'Some improvements to class template argument deduction integration into the standard library' This is an API change (not ABI change) due to a late change in the c++17 standard
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@309296 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-27 17:44:03 +00:00
Rachel Craik
24047fd4a7 Remove addtional parameters in function std::next() and std::prev()
Creating a function pointer with proper parameters pointing to std::next() or std::prev() should work.
This change moves the invented paramater for enable_if over to the return type to resolve this QoI issue.

Patch by Jason Liu.

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


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@308932 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-24 22:17:05 +00:00
Marshall Clow
33e24e157e make sure that we don't call basic_streambuf::gbump with a value bigger than INT_MAX, since it only takes an int. Related to, but not quite the same as PR33725
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@308880 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-24 14:05:10 +00:00
Nico Weber
bfa81b089c Fix grammar-o in comment.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@308827 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-22 15:16:42 +00:00
Stephan T. Lavavej
d08ba82b09 [libcxx] [test] Update msvc_stdlib_force_include.hpp.
MSVC's STL is replacing _HAS_FUNCTION_ASSIGN with _HAS_FUNCTION_ALLOCATOR_SUPPORT,
and is adding _HAS_UNEXPECTED.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@308535 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-19 22:02:33 +00:00
Stephan T. Lavavej
3c00cff599 [libcxx] [test] Fix Clang -Wunused-local-typedef warnings.
Fix D34536.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@308534 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-19 22:02:29 +00:00
Stephan T. Lavavej
321617c33d [libcxx] [test] Fix MSVC warning C4067 "unexpected tokens following preprocessor directive - expected a newline".
Also fixes Clang/LLVM 4.0 (for Windows) error "function-like macro 'TEST_GLIBC_PREREQ' is not defined".

Fixes D34535.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@308533 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-19 22:02:25 +00:00
Stephan T. Lavavej
ffc9965e58 [libcxx] [test] Fix MSVC warning C4242 "conversion from 'int' to 'const char', possible loss of data".
Fixes D34534.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@308532 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-19 22:02:22 +00:00
James Y Knight
fea8dc9721 Rework libcxx strerror_r handling.
The set of #ifdefs used to handle the two incompatible variants of
strerror_r were not complete (they didn't handle newlib appropriately).

Rather than attempting to make the ifdefs more complex, make them
unnecessary by choosing which behavior to use dependent upon the
return type.

Reviewers: waltl

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@308528 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-19 21:48:49 +00:00
Hans Wennborg
12ab658921 Update _LIBCPP_VERSION and the version in CMakeLists to 6.0
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@308468 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-19 13:57:10 +00:00
Hans Wennborg
2d17369ac6 Bump docs version to 6.0
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@308462 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-19 13:46:11 +00:00
Leo Li
158fe1062c [CMake] Use MATCHES for regular expression.
Subscribers: mgorny

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@308347 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-18 19:48:02 +00:00
Bruno Cardoso Lopes
da4047d838 Check for _MSC_VER before defining _LIBCPP_MSVCRT
Some targets (e.g. Darwin) might have the Win32 API available, but they
do not use MSVC CRT. Assume _LIBCPP_MSVCRT only when _MSC_VER is available
and __MINGW32__ isn't defined.

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

rdar://problem/32628786

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@308225 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-17 21:52:31 +00:00
Marshall Clow
7afe61ad1d Add case for c++2a to libc++ and test macros
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@308159 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-17 03:02:27 +00:00
Marshall Clow
893ac44f2a Update libc++ status pages with results of the Toronto Meeting - and for C++2a
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@308153 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-16 23:59:23 +00:00
Marshall Clow
4649a1eae0 Update issues moved in Toronto
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@308097 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-15 15:22:21 +00:00
Shoaib Meenai
0d6a92ed81 [libc++] Clean up cl warning 4231 disabling
Once upon a time, extern templates used to be a Microsoft extension, so
cl would warn about their usage, and libc++ suppressed that warning.
They've long since been standardized, so the warning is defunct. (libc++
also doesn't currently support building with cl anyway.)

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307997 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-14 03:56:54 +00:00
Shoaib Meenai
b58dd3d4f4 [libc++] class template -> template class. NFC
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307972 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-13 22:08:59 +00:00
Shoaib Meenai
cd75b288ca [libc++] Mark string operator+ _LIBCPP_FUNC_VIS
It has an extern template instantiation declaration in the headers and a
corresponding instantiation definition in the library, so we must mark
it with _LIBCPP_FUNC_VIS to make it available outside the library.

This doesn't cause any ABI changes as-is since we don't build libc++
with hidden visibility (so the function is exported anyway). It's needed
for building libc++ with hidden visibility, however.

Clarify the Windows behavior for extern function templates while I'm
here, since this exercises that behavior.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307966 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-13 21:35:52 +00:00
Shoaib Meenai
1beaa5accc [libc++] Remove unused _LIBCPP_FUNC_VIS_ONLY
This has been unused since r282644.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307965 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-13 21:28:17 +00:00
Shoaib Meenai
a3c3d5f6c1 [libc++] Use proper template terminology. NFC
It's supposed to be "class template" and "function template" instead of
"template class" and "template function".

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307954 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-13 20:47:24 +00:00
Ben Craig
de79ab6e4f Fix unrepresentable enum for clang-cl unstable ABI
When using LIBCXX_ABI_UNSTABLE=YES, clang-cl gave the following warning:

P:\llvm_master\src\llvm\projects\libcxx\include\string(683,51):
warning: enumerator value is not representable in the underlying type
'int' [-Wmicrosoft-enum-value]

Fixed by switching from enums to static const size_type.

https://reviews.llvm.org/D35174

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307751 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-12 01:45:13 +00:00
Eric Fiselier
12f2b260ed Remove <__refstring> header; Move it into source directory.
The libc++ <__refstring> headers has no real reason why it should
be a public header that libc++ ships. The only reason it was in the include
directory was because libc++abi needed it to build the library.

However keeping <__refstring> a header had other problems, like requiring its
dependancies to also be in the headers. For that reason this patch
moves it into the source directory.

To work around libc++abi's need for this header a duplicated copy was added
to libc++abi in r307748. While duplicating the code is an unfortunate solution
it's the best solution that's currently possible.

In the future I would like to start a discussion on the mailing lists about
making libc++abi build as a sub-project of libc++, requiring the libc++ sources
always be present.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307749 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-12 01:38:35 +00:00
Eric Fiselier
d60e344b70 Revert "[libc++] Refactoring __sync_* builtins; NFC (Reland)"
This reverts commit r307595. The commit had some issues that needed
to first be addressed in review.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307746 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-12 01:16:33 +00:00
Petr Hosek
347be61138 [libcxx][CMake] Add install path variable to allow overriding the destination
This is going to be used by the runtime build in the multi-target
setup to allow using different install prefix for each target.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307615 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-11 02:39:50 +00:00
Weiming Zhao
880dc47f37 [libc++] Refactoring __sync_* builtins; NFC (Reland)
Summary: Wrap __sync_* builtins with __libcpp_ functions to facility future customizations as atomic operations are unavailable on some targets.

Reviewers: danalbert, EricWF, jroelofs

Subscribers: joerg, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307595 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-10 21:37:35 +00:00
Weiming Zhao
7a188e3165 Revert "[libc++] Refactoring __sync_* builtins; NFC"
This reverts commit 72ff8866bca49ee7d24c87673293b4ce88a039ec.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307593 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-10 21:23:32 +00:00
Weiming Zhao
f7ed02c939 [libc++] Refactoring __sync_* builtins; NFC
Summary: Wrap __sync_* builtins with __libcpp_ functions to facility future customizations as atomic operations are unavailable on some targets.

Reviewers: danalbert, EricWF, jroelofs

Subscribers: joerg, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307591 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-10 21:02:54 +00:00
Eric Fiselier
6bfa7316ad Fix issues with UBSAN test configuration.
On Apple the test feature 'sanitizer-new-delete' was incorrectly
getting added to the LIT feature set, which mistakenly caused tests
to be disabled when using UBSAN (the feature is only needed with ASAN/MSAN/TSAN).

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307518 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-10 04:32:21 +00:00
Eric Fiselier
3f22e24981 Work around PR31864 - ATOMIC_LLONG_LOCK_FREE is incorrect in 32 bit builds
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307517 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-10 04:16:50 +00:00
Eric Fiselier
631d697c62 Fix test failure to to new/delete ellisions
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307510 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-09 22:20:07 +00:00
Casey Carter
8b30287098 optional: Implement LWG 2900 and P0602
Differential Revision: https://reviews.llvm.org/D32385

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307505 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-09 17:15:49 +00:00
Eric Fiselier
b2e9337b06 Fix filesystem build on platforms with weird time_t types.
32-bit powerpc provides a 64 bit time_t type and older ppc64 systems
provide time_t as a floating point type. This caused problems when building
operations.cpp since operations.cpp contained compile time tests for conversions
between time_t and filesystem time type.

When these tests failed they caused the libc++ build to fail as well. This is unfortunate.

This patch moves the tests out of the source file and into the test suite. It also
expands the tests to allow testing of the weird time_t configurations on all platforms.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307461 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-08 04:18:41 +00:00
Eric Fiselier
316bb1188f Fix diagnostic in verify test to match new Clang output
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307450 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-07 23:02:30 +00:00
Duncan P. N. Exon Smith
e452f6a7e3 cmath: Support clang's -fdelayed-template-parsing
r283051 added some functions to cmath (in namespace std) that have the
same name as functions in math.h (in the global namespace).  Clang's
limited support for `-fdelayed-template-parsing` chokes on this.  Rename
the ones in `cmath` and their uses in `complex` and the test.

rdar://problem/32848355

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307357 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-07 05:13:36 +00:00
Eric Fiselier
58cb7c19bf Suppress -Waligned-allocation-unavailable warning in libc++ test suite
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307218 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-05 22:40:58 +00:00
Marshall Clow
e00d350bbd Fix a bug in regex_Iterator where it would report zero-length matches forever. Reported as http://llvm.org/PR33681. Thanks to Karen Arutyunov for the report.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307171 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-05 16:37:19 +00:00
Eric Fiselier
530ad8eb20 Fix equivalent test on OS X and FreeBSD
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307119 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-05 03:54:38 +00:00
Eric Fiselier
f26da86616 Add dummy CMake target for *.pass.cpp tests when LIBCXX_CONFIGURE_IDE=ON.
In order for IDE's like CLion to correctly parse and highlight the tests
it needs to know roughly how to build them. This patch adds a dummy CMake target
for each/all of the .pass.cpp tests in the test suite to solve this problem.
The target is only created when LIBCXX_CONFIGURE_IDE=ON, so it shouldn't affect
most users.

Originally I wasn't sure that this change deserved to live upstream, but it's
quite frustrating to edit libc++ tests using CLion or Visual Studio without it,
in particular the filesystem tests which rely heavily on macros. Even though the change
should have no effect on non-IDE users/configurations I decided to commit it upstream
with the hopes it will benefit somebody other than me.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307118 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-05 03:50:03 +00:00
Eric Fiselier
3288eac673 Implement LWG 2937 - equivalent("dne", "exists") is not an error
This patch speculatively implements the PR for LWG 2937, which fixes
two issues with equivalent.

(1) It makes equivalent("dne", "exists") an error. Previously only
    equivalent("dne", "dne") was an error and the former case was not (it returned false).
    Now equivalent reports an error when either input doesn't exist.

(2) It makes equivalent(p1, p2) well-formed when `is_other(p1) && is_other(p2)`.
    Previously this was an error, but there is seemingly no reason why it should be on POSIX system.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307117 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-05 03:37:05 +00:00
Akira Hatanaka
c5247b417b Revert "[libcxx] Annotate c++17 aligned new/delete operators with availability"
This reverts commit r306310.

r306310 causes clang to reject a call to an aligned allocation or
deallocation function if it is not implemented in the standard library
of the deployment target. This is not the desired behavior when users
have defined their own aligned functions.

rdar://problem/32664169

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@306859 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-30 18:50:23 +00:00
David L. Jones
4438e211a7 [lit/libcxx] Fix a remaining reference to lit.util.capture() in custom libcxx/Darwin code.
Summary:
This reference to lit.util.capture is functionally identical to
subprocess.check_output, so this change switches to call the library routine
directly.

Reviewers: mzolotukhin, EricWF

Reviewed By: mzolotukhin

Subscribers: sanjoy, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@306755 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-29 23:07:27 +00:00
Shoaib Meenai
6850670375 [libc++] Hoist explicit instantiation above implicit. NFC
The string literal operators have implicit instantiations of
basic_string<char> and basic_string<wchar>, which prevent the dllimport
on the subsequent explicit instantiation declarations from having an
effect. Hoisting the explicit instantiations above the implicit ones
fixes the issue.

I think it's pretty unfortunate that the ordering has such an effect,
and I'd fixed the same issue for dllexport in r288682. dllimport is more
complicated from a codegen perspective, however, and clang's behavior of
ignoring the dllimport when there's a previous implicit instantiation is
consistent with cl, so changing the order is our only recourse.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@306632 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-29 02:52:46 +00:00
Marshall Clow
c98c89099a Updated notest on 2974
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@306581 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-28 18:19:34 +00:00
Marshall Clow
a12318f5ae Added failing tests for index out of range for tuple_element<pair<T1,T2>> and variant_alternative<>
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@306580 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-28 18:18:30 +00:00
Akira Hatanaka
a028f3c8d9 [libcxx] Annotate c++17 aligned new/delete operators with availability
attribute.

This is needed because older versions of libc++ do not have these
operators. If users target an older deployment target and try to compile
programs in which these operators are explicitly called, the compiler
will complain.

The following is the list of minimum deployment targets for the four
OSes:

macosx: 10.13
ios: 11.0
tvos: 11.0
watchos: 4.0

rdar://problem/32664169

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@306310 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-26 17:39:48 +00:00
Marshall Clow
2ac0ed06e2 Updated for the Toronto meeting
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@306269 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-26 04:25:15 +00:00
Marshall Clow
3477ae445a Implement inclusive_scan/transform_inclusive_scan for C++17.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@306083 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-23 05:12:42 +00:00