Commit Graph

5358 Commits

Author SHA1 Message Date
Marshall Clow
dee3c9a01a I changed a 'enable_if<...>::type to' 'enable_if_t<...>' but forgot to remove the preceding 'typename'
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354995 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-27 16:09:35 +00:00
Marshall Clow
ae4afd034b Implment the last part of P1024: tuple-like interface to span. Reviewed as https://reviews.llvm.org/D58706.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354988 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-27 15:41:37 +00:00
Marshall Clow
4542e7bf56 In the review of D58642, Louis asked: 'Is there a reason for making this inline? Templates are already inline by default'. I told him that I didn't want to change the one call (ssize) that I was adding, but would come back later and clean them all (data/empty/begin/end/cbegin/cend/rbegin/rend/crbegin/crend/size/ssize) up later. Now it is later. Remove the unnecessary 'inline' modifiers from all these calls.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354952 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-27 03:25:43 +00:00
Marshall Clow
dd2ae1242f Implement the second part of P1227R2 - Signed ssize() functions. Reviewed as https://reviews.llvm.org/D58642
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354950 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-27 02:58:56 +00:00
Marshall Clow
680a56e1aa Fix an ambiguity in the tests that gcc-tot complained about.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354944 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-27 01:29:52 +00:00
Louis Dionne
a4bb2d075d [libc++] Add a test for PR14074
PR14074 was fixed in r165884, but no tests were added.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354943 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-27 01:29:09 +00:00
Louis Dionne
21c042e77e [libc++] Mark several tests as XFAIL on macosx10.7
Those tests fail when linking against a new dylib but running against
macosx10.7. I believe this is caused by a duplicate definition of the
RTTI for exception classes in libc++.dylib and libc++abi.dylib, but
this matter still needs some investigation.

This issue was not caught previously because all the tests always linked
against the same dylib used for running (because LIT made it impossible
to do otherwise before r349171).

rdar://problem/46809586

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354940 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-27 00:57:57 +00:00
Marshall Clow
b3c66aa0ab First part of P1227R2 - change span over to use 'size_t' instead of 'ptrdiff_t'. Reviewed as https://reviews.llvm.org/D58639.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354936 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-27 00:32:16 +00:00
Louis Dionne
b71643a4c0 [libc++] Add <filesystem> to the min-mac macro header test
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354932 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-26 23:14:58 +00:00
Marshall Clow
f7374c69a9 Remove P1272R1, it was not moved in Kona
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354904 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-26 18:17:30 +00:00
Marshall Clow
b0560e2ae9 Put a 'first implemented' version into the entry for P1357
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354901 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-26 17:22:47 +00:00
Marshall Clow
02ee9a6e9a Mark several issues (and one paper) as complete. Reviewed as D58099; but I added LWG3101 and LWG3144 and P1357R1 as well.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354898 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-26 17:01:00 +00:00
Marshall Clow
452149ea33 Implement P1357: Traits for [Un]bounded Arrays; adopted in Kona
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354891 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-26 16:07:03 +00:00
Louis Dionne
d772e8009d [libc++] Rename _NOALIAS macro to _LIBCPP_NOALIAS
Summary:
For consistency, libc++ macros always start with _LIBCPP. This should
have no functionality change.

Reviewers: EricWF, mclow.lists

Subscribers: christof, jkorous, dexonsmith, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354848 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-26 06:34:42 +00:00
Marshall Clow
a333218455 LWG3101 - span's Container constructors need another constraint. Reviewed as https://reviews.llvm.org/D57058.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354805 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-25 18:32:57 +00:00
Marshall Clow
c67930bd74 Commit LWG3144 - span does not have a const_pointer typedef. Reviewed as D57039.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354802 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-25 17:58:03 +00:00
Marshall Clow
e5cb744bf1 First part of P1024: Usability Enhancements for std::span. Remove operator() for indexing, and add 'front' and 'back' calls.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354801 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-25 17:54:08 +00:00
Marshall Clow
1c2f15d4c4 Update status page with papers/issues adopted in Kona
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354796 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-25 16:12:00 +00:00
Louis Dionne
98173dc3c4 [libcxx] Make sure all experimental tests are disabled when enable_experimental=False
Summary:
Previously, we'd run some experimental tests even when enable_experimental=False
was used with lit.

Reviewers: EricWF

Subscribers: christof, jkorous, dexonsmith, libcxx-commits, mclow.lists

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354725 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-23 11:24:03 +00:00
Louis Dionne
06dd101a65 [NFC] Fix incorrect comment in std::function test
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354537 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-21 00:53:26 +00:00
Dimitry Andric
fd04b117fc Fix the build with gcc when -Wredundant-decls is passed
Summary:
gcc warns that `__throw_runtime_error` is declared both in `<__locale>`
and `<stdexcept>`, if `-Wredundant-decls` is passed on the command
line; this is the case with FreeBSD when ${WARNS} == 6.

Since `<__locale>` gets its first declaration via a transitive include
of `<stdexcept>`, and the second declaration is after the first
invocation of `__throw_runtime_error`, delete that second declaration.

Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>

Reviewers: kristina, MaskRay, EricWF, ldionne, ngie

Reviewed By: EricWF

Subscribers: krytarowski, brooks, emaste, dim, christof, jdoerfert, libcxx-commits

Tags: #libc

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


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354515 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-20 21:01:31 +00:00
Jonas Hahnfeld
22d3f6dd25 [compiler-rt] Build custom libcxx with libcxxabi
This changes add_custom_libcxx to also build libcxxabi and merges
the two into a static and hermetic library.
There are multiple advantages:
1) The resulting libFuzzer doesn't expose C++ internals and looks
   like a plain C library.
2) We don't have to manually link in libstdc++ to provide cxxabi.
3) The sanitizer tests cannot interfere with an installed version
   of libc++.so in LD_LIBRARY_PATH.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354212 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-17 12:16:20 +00:00
Louis Dionne
712d476de3 [libcxx] Do not assume the number of elements in a moved-from associative container
Reviewed as https://reviews.llvm.org/D57903.
Thanks to Andrey Maksimov for the patch.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353955 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-13 16:43:44 +00:00
Louis Dionne
af15bb4cdf [libc++] Avoid UB in the no-exceptions mode in a few places
Summary:
A few places in the library seem to behave unexpectedly when the library
is compiled or used with exceptions disabled. For example, not throwing
an exception when a pointer is NULL can lead us to dereference the pointer
later on, which is UB. This patch fixes such occurences.

It's hard to tell whether there are other places where the no-exceptions
mode misbehaves like this, because the replacement for throwing an
exception does not always seem to be abort()ing, but at least this
patch will improve the situation somewhat.

See http://lists.llvm.org/pipermail/libcxx-dev/2019-January/000172.html

Reviewers: mclow.lists, EricWF

Subscribers: christof, jkorous, dexonsmith, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353850 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-12 16:06:02 +00:00
Petr Hosek
f759756c12 [CMake] Avoid passing -rtlib=compiler-rt when using compiler-rt
We build libc++ and libc++abi with -nodefaultlibs, so -rtlib=compiler-rt
has no effect and results in an 'argument unused during compilation'
warning which breaks the build when using -Werror. We can therefore drop
-rtlib=compiler-rt without any functional change; note that the actual
compiler-rt linking is handled by HandleCompilerRT.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353786 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-12 01:35:29 +00:00
Eric Fiselier
e88eb48b17 Don't declare fenv.h functions when they're a macro.
libc still provides function declarations, and these declarations
conflict with libc++'s

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353774 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-12 00:05:14 +00:00
Eric Fiselier
199f01c55f Make the sym_diff utilities more useful.
In particular when working with static libraries and libstdc++.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353772 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-12 00:00:43 +00:00
Eric Fiselier
ecc2c089fd Add fenv.h header
Summary:
Some implementations of fenv.h use macros to define the functions they provide. This can cause problems when `std::fegetround()` is spelled in source.

This patch adds a `fenv.h` header to libc++ for the sole purpose of turning those macros into real functions.

Reviewers: rsmith, mclow.lists, ldionne

Reviewed By: rsmith

Subscribers: mgorny, christof, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353767 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-11 23:47:19 +00:00
Petr Hosek
fc1ec361d3 [libcxx] Preserve order, avoid duplicates when merging static archives
glob can return files in arbitrary order which breaks deterministic
builds. Rather, use `ar t` to list the files in each archive and
preserve the original order. Using `ar q` results in duplicate entries
in the archive, instead use `ar r` to avoid duplicates.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353671 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-11 08:48:47 +00:00
Chandler Carruth
c882476dfa The new file header didn't get carried over when these files were
"moved" somehow, update them to use it.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353669 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-11 08:39:23 +00:00
Chandler Carruth
b20da37b6b Update some newly added files that mistakenly used the old file header
to the new one.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353668 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-11 08:39:14 +00:00
Eric Fiselier
d47c19a055 fix -Wextra-semi warnings
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353650 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-10 18:29:00 +00:00
Eric Fiselier
bc415828df Make LIBCXX_STANDARD_VER configurable
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353649 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-10 18:27:55 +00:00
Eric Fiselier
b9a4d073af Format sym_extract.py output to minimize diff output.
Different versions of python print dictionaries in different orders.
 This can mess up diffs when updating ABI lists. This patch uses
 pprint.pformat to print the dicts to get a consistent ordering.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353634 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-10 04:48:54 +00:00
Eric Fiselier
25c089ef5d Add missing symbols to Apple v2 abi list.
The itoa symbols were added and their addition is documented in the CHANGELOG.
I'm not sure why the valarray symbols were missing previously, but they're
present in the v1 ABI lists and should be here as well.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353633 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-10 04:41:48 +00:00
Eric Fiselier
e8be8717a3 Add ABI list directories for 8.0
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353632 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-10 04:09:46 +00:00
Kamil Rytarowski
e4dbc70699 Mark another test as flaky
Reported on the NetBSD buildbot.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353622 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-09 18:39:07 +00:00
Petr Hosek
1603203e32 [libcxx] Support runtimes and monorepo locations for tests
The test configuration support currently searches for libc++ sources
in <ROOT>/projects/libcxx. This change also additionally searches
<ROOT>/runtimes/libcxx (so called runtimes layout) and <ROOT>/libcxx
(monorepo layout).

This matches the logic we already use in CMake, for example:
https://github.com/llvm/llvm-project/blob/6fd4e7f/libcxx/CMakeLists.txt#L148

When the monorepo becomes the only supported layout in the future,
we can simplify this logic again.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353600 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-09 02:50:09 +00:00
Marshall Clow
b72412d276 Add static_asserts to tuple's comparison operators to enforce the requirement that the tuples be the same size. See PR39183 for an example where we give unexpected results for this bad input case. With this change, we will reject it at compile-time
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353450 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-07 19:03:48 +00:00
Marshall Clow
0c92250485 Add UBSAN annotation to __hash_table::rehash; we don't do anything wrong, but UBSAN's checker flags it as suspicious. See PR38606. NFC
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353448 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-07 18:53:58 +00:00
Louis Dionne
11b7c52885 Revert "[libc++] Only add dylib-related features when using the system's libc++"
This reverts r353319, which broke our internal CI.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353321 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-06 18:33:02 +00:00
Louis Dionne
8fb436e97e [libc++] Only add dylib-related features when using the system's libc++
Otherwise, when testing trunk libc++ on an older system, lit will think
that the dylib features are disabled. Ideally, we'd have a notion of
running the tests with/without a deployment target (or, equivalently,
a deployment target representing trunk where everything is as recent
as can be). Since we always have a deployment target right now (which
defaults to the current system), we only enable those features when
we're going to also be testing with the system libc++.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353319 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-06 18:06:50 +00:00
Marshall Clow
4f9dc4d9cf Add a specialization for '__unwrap_iter' to handle const interators. This enables the 'memmove' optimization for std::copy, etc.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353311 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-06 16:10:25 +00:00
Louis Dionne
5569a5e69c [libc++] Fix XFAILs when exceptions are disabled
It turns out that I un-XFAILed too many tests in r353210: some tests
actually fail whether exceptions are enabled or not because they use
types that are marked as unavailable even when exceptions are disabled.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353215 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-05 20:55:23 +00:00
Louis Dionne
4806bce5a8 [libc++] Fix XFAILs on macOS when exceptions are disabled
Some tests are marked as failing on platforms where the dylib does not
provide the required exception classes. However, when testing with
exceptions disabled, those tests shouldn't be marked as failing.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353210 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-05 20:11:58 +00:00
Petr Hosek
fbc4ec4cc5 [CMake] Support compiler-rt builtins library in tests
We're building tests with -nostdlib which means that we need to
explicitly include the builtins library. When using libgcc (default)
we can simply include -lgcc_s on the link line, but when using
compiler-rt builtins we need a complete path to the builtins library.

This path is already available in CMake as <PROJECT>_BUILTINS_LIBRARY,
so we just need to pass that path to lit and if config.compiler_rt is
true, link it to the test.

Prior to this patch, running tests when compiler-rt is being used as
the builtins library was broken as all tests would fail to link, but
with this change running tests when compiler-rt bultins library is
being used should be supported.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353208 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-05 19:50:47 +00:00
Louis Dionne
c6d9b0768b [libc++] Use UNSUPPORTED instead of TEST_STD_VER #ifdef
When the whole test only works starting at some version of the Standard,
use UNSUPPORTED lit markup instead of #ifdef TEST_STD_VER. This provides
more visibility into the test suite.

Reviewed as https://reviews.llvm.org/D57704.
Thanks to Andrey Maksimov for the patch.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353206 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-05 19:50:17 +00:00
Louis Dionne
60c45f5f7c [libcxx] Start defining lit features for tests depending on availability
This patch removes some vendor-specific availability XFAILs from the
test suite. In the future, when a new feature is introduced in the
dylib, an availability macro should be created and a matching lit
feature should be created. That way, the test suite can XFAIL whenever
the implementation lacks the necessary feature instead of being
cluttered by vendor-specific annotations.

Right now, those vendor-specific annotations are still somewhat cluttering
the test suite by being in `config.py`, but at least they are localized.
In the future, we could design a way to define those less intrusively or
even automatically based on the availability macros that already exist
in <__config>.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353201 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-05 19:22:38 +00:00
Louis Dionne
815d755706 [libc++] Control whether exceptions are enabled in the macOS trunk testing script
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353185 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-05 16:42:37 +00:00
Louis Dionne
72ea6f36d1 [NFC][libc++] Reindent function
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353180 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-05 15:46:52 +00:00