Commit Graph

6205 Commits

Author SHA1 Message Date
Vitaly Buka
9bde1504b2 [cxx2a] Fix warning triggered by r343285
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@343369 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-29 02:17:12 +00:00
Louis Dionne
16357ee19e [libc++] Remove Fuchsia-specific knowledge to pick the ABI version
Summary:
The ABI version used by libc++ is a configuration option just like any other
configuration option. It is a knob that can be used by vendors to customize
the libc++ that they ship. As such, we should not be hardcoding vendor-specific
configuration choices in libc++.

When building libc++ for Fuchsia, Fuchsia's build scripts should simply define
the libc++ ABI version to 2 -- this will result in the _LIBCPP_ABI_VERSION
macro being defined in the __config header that is generated when libc++ is
built and installed, which is the correct way to customize libc++'s behavior
for specific vendors.

Reviewers: phosek, EricWF

Subscribers: mgorny, christof, dexonsmith, cfe-commits, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@343079 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-26 08:24:51 +00:00
Louis Dionne
c4b44869da Revert r342936 "Remove redundant null pointer check in operator delete"
A review for the change was opened in https://reviews.llvm.org/D52401
but the change was committed before being approved by any of the code
owners for libc++.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342938 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-25 04:13:08 +00:00
Fangrui Song
32e3054763 Remove redundant null pointer check in operator delete
C89 4.10.3.2 The free function
C99 7.20.3.2 The free function
C11 7.22.3.3 The free function

    If ptr is a null pointer, no action shall occur.

_aligned_free on MSDN:

    If memblock is a NULL pointer, this function simply performs no actions.

Reviewers: EricWF, mclow.lists

Subscribers: christof, ldionne, cfe-commits, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342936 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-25 02:50:57 +00:00
Louis Dionne
2495dabf93 [libcxx] Fix the binder deprecation tests on Clang 5.
Tested on Docker containers with Clang 4, 5 and 6.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342855 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-23 23:17:48 +00:00
Louis Dionne
58deb8a9c9 [libcxx] Fix buildbots on Debian
Debian build bots are running Clang 4, which apparently does not support
the "deprecated" attribute properly. Clang pretends to support the attribute,
but the attribute doesn't do anything.

(live example: https://wandbox.org/permlink/0De69aXns0t1D59r)

On a separate note, I'm not sure I understand why we're even running the
libc++ tests under Clang-4. Is this a configuration we support? I can
understand that libc++ should _build_ with Clang 4, but it's not clear
to me that new libc++ headers should be usable under older compilers
like that.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342854 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-23 22:16:35 +00:00
Louis Dionne
e992efe2da [libcxx] Document new symbols __u64toa and __u32toa on Darwin
Summary:
This is the counterpart for https://reviews.llvm.org/D50130 and
https://reviews.llvm.org/D52391 on Darwin.

Reviewers: EricWF

Subscribers: christof, dexonsmith, cfe-commits, libcxx-commits, lichray

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342849 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-23 21:10:06 +00:00
Louis Dionne
13cf3b9b36 [libc++] Add deprecated attributes to many deprecated components
Summary:
These deprecation warnings are opt-in: they are only enabled when the
_LIBCXX_DEPRECATION_WARNINGS macro is defined, which is not the case
by default. Note that this is a first step in the right direction, but
I wasn't able to get an exhaustive list of all deprecated components
per standard, so there's certainly stuff that's missing. The list of
components this commit marks as deprecated is:

in C++11:
- auto_ptr, auto_ptr_ref
- binder1st, binder2nd, bind1st(), bind2nd()
- pointer_to_unary_function, pointer_to_binary_function, ptr_fun()
- mem_fun_t, mem_fun1_t, const_mem_fun_t, const_mem_fun1_t, mem_fun()
- mem_fun_ref_t, mem_fun1_ref_t, const_mem_fun_ref_t, const_mem_fun1_ref_t, mem_fun_ref()

in C++14:
- random_shuffle()

in C++17:
- unary_negate, binary_negate, not1(), not2()

<rdar://problem/18168350>

Reviewers: mclow.lists, EricWF

Subscribers: christof, dexonsmith, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342843 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-23 18:35:00 +00:00
Louis Dionne
5981b33dd8 [NFC][libcxx] Rename helpers with 4 underscores to something more reasonable
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342840 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-23 16:44:50 +00:00
Louis Dionne
6adb8a31f2 [NFC][libc++] Fix typo in the description of LIBCXX_INCLUDE_BENCHMARKS
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342822 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-22 21:30:12 +00:00
Eric Fiselier
7a26d87c9f Mark [[nodiscard]] tests unsupported on GCC prior to 7.0
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342821 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-22 21:01:07 +00:00
Eric Fiselier
33cc965bf6 Fix UB in SIMD tests.
One of the SIMD tests attempted to left shift a value by 42, which
is UB when the left hand side is a 32 bit integer type.

This patch adjusts the test to use the value 4 instead of 42.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342820 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-22 20:09:02 +00:00
Roman Lebedev
8ee872ed9e [libcxx] Readjust nodiscard_extensions.pass.cpp test - just disable for ASAN
In rL342814, i have committed a blind fix to unbreak the asan buildbot,
but as it was later discussed, the leak is intentional,
so we can not fix the failure that way.

So this reverts the leak 'fix',
and simply disables the test in the presence of ASAN.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342819 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-22 20:07:02 +00:00
Eric Fiselier
23b77ec661 Mark test as flaky
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342818 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-22 20:03:47 +00:00
Eric Fiselier
3cea452823 Correct docs to reference the new libc++ lists.
We recently added libcxx-dev and libcxx-commits mailing lists.
This patch updates the libc++ documentation to correctly reference
the libc++ lists instead of the old Clang ones.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342816 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-22 19:49:29 +00:00
Roman Lebedev
4a5c6f3482 [libcxx] Blind attempt to fix harmless leak in nodiscard_extensions.pass.cpp test
libcxx-libcxxabi-x86_64-linux-ubuntu-asan complains about a leak here.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342814 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-22 19:09:57 +00:00
Louis Dionne
7c3b27d2c9 [libcxx] Fix the definition of the check-cxx-abilist target on Darwin
Summary:
r342805 added support for the check-cxx-abilist target on FreeBSD, but broke
the target on macOS in doing so. The problem is that the GENERIC_TARGET_TRIPLE
gets overwritten after replacing the FreeBSD regular expression, which
nullifies the replacement done with the darwin regular expression.

Reviewers: dim, EricWF

Subscribers: emaste, mgorny, krytarowski, christof, dexonsmith, cfe-commits, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342813 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-22 18:39:38 +00:00
Zhihao Yuan
5ba89193c4 Document new symbols for __u64toa and __u32toa
Summary:
They are introduced in r338479; their Linux ABI changes are recorded in r338486.

TODO: Record the Mac OS X ABI changes.

Reviewers: EricWF

Reviewed By: EricWF

Subscribers: christof, ldionne, libcxx-commits, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342810 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-22 18:05:28 +00:00
Roman Lebedev
caf40ae419 [libc++] Add _LIBCPP_ENABLE_NODISCARD and _LIBCPP_NODISCARD_EXT to allow pre-C++2a [[nodiscard]]
Summary:
The `[[nodiscard]]` attribute is intended to help users find bugs where
function return values are ignored when they shouldn't be. After C++17 the
C++ standard has started to declared such library functions as `[[nodiscard]]`.
However, this application is limited and applies only to dialects after C++17.
Users who want help diagnosing misuses of STL functions may desire a more
liberal application of `[[nodiscard]]`.

For this reason libc++ provides an extension that does just that! The
extension must be enabled by defining `_LIBCPP_ENABLE_NODISCARD`. The extended
applications of `[[nodiscard]]` takes two forms:

1. Backporting `[[nodiscard]]` to entities declared as such by the
   standard in newer dialects, but not in the present one.

2. Extended applications of `[[nodiscard]]`, at the libraries discretion,
   applied to entities never declared as such by the standard.

Users may also opt-out of additional applications `[[nodiscard]]` using
additional macros.

Applications of the first form, which backport `[[nodiscard]]` from a newer
dialect may be disabled using macros specific to the dialect it was added. For
example `_LIBCPP_DISABLE_NODISCARD_AFTER_CXX17`.

Applications of the second form, which are pure extensions, may be disabled
by defining `_LIBCPP_DISABLE_NODISCARD_EXT`.

This patch was originally written by me (Roman Lebedev),
then but then reworked by Eric Fiselier.

Reviewers: mclow.lists, thakis, EricWF

Reviewed By: thakis, EricWF

Subscribers: llvm-commits, mclow.lists, lebedev.ri, EricWF, rjmccall, Quuxplusone, cfe-commits, christof

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342808 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-22 17:54:48 +00:00
Dimitry Andric
699bfec76c Similar to the handling of darwin target triples, strip the version
numbers off of freebsd target triples, when generating the name of the
ABI list file for check-cxx-abilist target.

Also remove unnecessary parentheses in the regex for darwin, and
slightly reword the comment.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342805 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-22 14:37:49 +00:00
Dimitry Andric
6bcb2dcb03 Remove a bunch of empty subdirectories. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342803 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-22 13:32:37 +00:00
Pirama Arumuga Nainar
3136dc5117 [Win32] Overload ==, != for locale_t and long long am: e2284c4c44 am: 270f726e23
am: bd5e08832b

Change-Id: I98d461d79218dbd3af66c0764250654a3d9912f3
2018-09-21 16:06:43 -07:00
Pirama Arumuga Nainar
c6c1786cfe Configure ELAST for MinGW am: e9bb2b4bd6 am: f31a92fffa
am: 850149ed6b

Change-Id: Ic055298b442981a43ee9fd28f0a2f66130a0ca70
2018-09-21 16:06:33 -07:00
Pirama Arumuga Nainar
bd5e08832b [Win32] Overload ==, != for locale_t and long long am: e2284c4c44
am: 270f726e23

Change-Id: Id9adee96c2757fcf278229ae7fd540d66d9dffa5
2018-09-21 15:20:12 -07:00
Pirama Arumuga Nainar
850149ed6b Configure ELAST for MinGW am: e9bb2b4bd6
am: f31a92fffa

Change-Id: I158873e9e092611ab7665bbe422f1c1964470770
2018-09-21 15:20:03 -07:00
Pirama Arumuga Nainar
5383d2f0ba Enable libcxx_static for Windows
- Use Win32 threads.  MinGW pthreads throws an error when building
libcxx since it's pthread_mutex_initializer is not constant (needs a
cast).
- Disable visibility annotations for libcxx and libcxxabi since we are
only going to support these as static libraries.
- Build sources for Windows platform support.
- Use SjLj exceptions for 32-bit.  libgcc_eh implements SjLj exception
model for 32-bit.
- Undefine WIN32_LEAN_AND_MEAN macro.  libcxx sources define them where
necessary.

Test: Build and test Windows binaries under Wine.

Change-Id: I76a440ff5d71eb5a3b7d57dd97e742a458ffbe16
2018-09-21 15:11:33 -07:00
Pirama Arumuga Nainar
270f726e23 [Win32] Overload ==, != for locale_t and long long
am: e2284c4c44

Change-Id: I26afacf9c218a7d59a799083c8b250001f5a28d0
2018-09-21 15:07:01 -07:00
Pirama Arumuga Nainar
f31a92fffa Configure ELAST for MinGW
am: e9bb2b4bd6

Change-Id: I7efc655f0d95e6f0bc6d462d17ca79d7ff9cf06e
2018-09-21 15:06:55 -07:00
Sylvestre Ledru
8f4c8e666e fix some typos in the doc
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342628 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-20 08:05:01 +00:00
Sylvestre Ledru
e404320723 add a quick link to libc++abi
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342625 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-20 07:58:43 +00:00
Sylvestre Ledru
ac2b5703bb refresh the libc++ homepage
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342624 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-20 07:57:31 +00:00
Eric Fiselier
087a509b66 Fix diagnostic regex in variant tests to tolerate older clang versions
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342609 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-20 01:15:17 +00:00
Volodymyr Sapsai
e59d098825 Revert "Implement LWG 2221 - No formatted output operator for nullptr."
This reverts r342566 as it causes on bots linker errors like

> Undefined symbols for architecture i386:
>   "std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(std::nullptr_t)", referenced from:


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342599 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-19 23:31:34 +00:00
Marshall Clow
f06032bb0a Implement LWG 2221 - No formatted output operator for nullptr. Reviewed as https://reviews.llvm.org/D44263
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342566 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-19 18:29:57 +00:00
Eric Fiselier
989927cc37 Don't require relops on variant alternatives to all return the same
type.

Libc++ correctly asserts that a set of visitors for a variant all
return the same type. However, we use the visitation machinary to
perform relational operations. This causes a static assertion when
some of the alternatives relops return a UDT which is implicitly
convertible to bool instead of 'bool' exactly.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342560 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-19 17:53:21 +00:00
Marshall Clow
699cb5b3b8 Remove unused include of "verbose_assert.h"
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342524 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-19 02:27:44 +00:00
Pirama Arumuga Nainar
e2284c4c44 [Win32] Overload ==, != for locale_t and long long
Summary:
_is_chartype_l (needed for isxdigit_l) in MinGW compares locale_t and NULL.
NULL is 'long long' for 64-bit, and this results in ambiguous overloads when
compiled with Clang.  Define a concrete overload for the operators to fix the
ambiguity.

Reviewers: mstorsjo, EricWF, srhines, danalbert

Subscribers: christof, cfe-commits, ldionne

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336141 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-18 17:53:49 -07:00
Pirama Arumuga Nainar
e9bb2b4bd6 Configure ELAST for MinGW
Summary:
Use _LIBCPP_MSVCRT_LIKE while configuring ELAST, so MinGW gets the same
configuration as MSVC.

Reviewers: compnerd, srhines, danalbert, mstorsjo

Subscribers: christof, ldionne, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@335916 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-18 17:53:30 -07:00
Fangrui Song
35a0c2ce5e Fix typo
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342361 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-17 07:40:42 +00:00
Marshall Clow
1755c75e7e Mark LWG#3102 as complete. No code changes, but I updated a test or two
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342103 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-13 02:23:52 +00:00
Marshall Clow
e3973fd962 Implement the infrastructure for feature-test macros. Very few actual feature test macros, though. Reviewed as: https://reviews.llvm.org/D51955
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342073 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-12 19:41:40 +00:00
Marshall Clow
420ace6f28 Actually mark LWG#2953, don't just say you've done so in r342070
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342071 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-12 18:53:02 +00:00
Marshall Clow
c106dd615d mark LWG#2953 as complete. No code changes required, but added a couple of extra tests.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342070 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-12 18:51:12 +00:00
Marshall Clow
575d6888eb Update the failure annotations for the uncaught_exceptions test. The underlying abi library on some Mac OS versions does not support the plural uncaught_exceptions, so libc++ emulates it from the singlar; this means it will only return 0 or 1.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342063 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-12 16:59:09 +00:00
Marshall Clow
ec25143bbb Implement LWG #3017. list splice functions should use addressof
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342057 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-12 14:46:17 +00:00
Marshall Clow
bf9b545a05 Update the synopsis for <version>. NFC
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@341990 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-11 20:51:54 +00:00
Marshall Clow
53c8e25037 Fix PR# 38900 - don't call swap inside of random_shuffle when we'd be swapping an element with itself
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@341975 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-11 18:33:45 +00:00
Hans Wennborg
5a86ba0aa0 ReleaseNotes: update links to use https
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@341789 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-10 08:57:12 +00:00
Marshall Clow
8c58c22937 [asan] Update a vector's storage annotation during destruction. Reviewed as https://reviews.llvm.org/D50101. Thanks to bobsayshilol (Ben) for the patch.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@341671 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-07 15:47:59 +00:00
Louis Dionne
6969dc114e [libc++] Add a link to the Release notes from the main libc++ documentation
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@341551 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-06 15:05:43 +00:00