Commit Graph

8028 Commits

Author SHA1 Message Date
Louis Dionne f800560ff1 [libc++] Rename the 'libc++' Lit feature to 'llvm-libc++'
This is to simplify an upcoming change where we distinguish between
flavors of libc++ by adding an apple-libc++ Lit feature.

Differential Revision: https://reviews.llvm.org/D110870
2021-10-04 18:32:50 -04:00
Louis Dionne 45395775c1 [libc++] Disable the Apple system -fno-exceptions CI that is currently building
I'm disabling it to avoid blocking everybody until I've fixed the issue.
2021-10-04 14:58:30 -04:00
Louis Dionne 83bc88174e [libc++][NFC] Fix include guard for some detail header 2021-10-04 13:36:08 -04:00
Louis Dionne 2e93453114 [libc++][NFC] Remove header name from <version> 2021-10-04 13:34:26 -04:00
Sylvestre Ledru c788bea243 libc++: document in the release notes that a C++20 compiler is expected
Differential Revision: https://reviews.llvm.org/D111043
2021-10-04 19:03:05 +02:00
Louis Dionne c0824a7044 [libc++][NFC] Qualify nullptr_t in test 2021-10-04 11:20:24 -04:00
Louis Dionne 6bc9a76739 [libc++][NFC] Qualify usage of nullptr_t in the format tests 2021-10-04 10:22:17 -04:00
Arthur O'Dwyer 8320017b79 [libc++] [ranges] Uncomment operator<=> in transform and iota iterators.
The existing tests for transform_view::iterator weren't quite right,
and can be simplified now that we have more of C++20 available to us.
Having done that, let's use the same pattern for iota_view::iterator
as well.

Differential Revision: https://reviews.llvm.org/D110774
2021-10-02 21:26:27 -04:00
Mark de Wever 09b51451da [NFC][libc++] Use TEST_HAS_NO_EXCEPTIONS in tests. 2021-10-02 13:47:27 +02:00
Mark de Wever 02c601f442 [libc++][doc] Update format status.
Updated based on recent commits, new reviews and work continuing for
P2216.
2021-10-02 13:47:02 +02:00
Mark de Wever ac7031b2b2 [libc++][format] Implement Unicode support.
This adds the width estimation functions to the std-format-spec.

Implements parts of:
- P0645 Text Formatting
- P1868 width: clarifying units of width and precision in std::format

Reviewed By: #libc, ldionne, vitaut

Differential Revision: https://reviews.llvm.org/D103413
2021-10-02 11:57:40 +02:00
Shivam Gupta 237e9059f7 [libc++][Docs] Update benchmark doc wrt monorepo
Seems this section is not updated since we have transited to llvm-project monorepo.
At the start, we build libcxx under monorepo configuration but later try to make the separate configuration for libcxx build
and running benchmark.

Reviewed By: ldionne, #libc

Differential Revision: https://reviews.llvm.org/D110722
2021-10-02 07:35:32 +05:30
Arthur O'Dwyer 2a6b99d5f8 [libc++] Revert the part of my b82683b that affected <version>.
This reverts part of commit b82683b2eb.
I hadn't intended to remove the `// -*- C++ -*-` comment line
from `libcxx/include/version`, only from the generated tests.
Thanks to Raul Tambre for the catch.
2021-10-01 13:01:51 -04:00
Arthur O'Dwyer c333505fa5 [libc++] [test] Remove filenames from copyright headers. NFCI.
Discussed in D110794.
2021-10-01 12:14:00 -04:00
Arthur O'Dwyer d4b59a05fc [libc++] Remove "// -*- C++ -*-" comments from all .cpp files. NFCI.
Even if these comments have a benefit in .h files (for editors that
care about language but can't be configured to treat .h as C++ code),
they certainly have no benefit for files with the .cpp extension.

Discussed in D110794.
2021-10-01 12:06:59 -04:00
Arthur O'Dwyer b82683b2eb [libc++] [test] Remove "// -*- C++ -*-" comments from generated .cpp files.
Even if these comments have a benefit in .h files (for editors that
care about language but can't be configured to treat .h as C++ code),
they certainly have no benefit for files with the .cpp extension.

Discussed in D110794.
2021-10-01 12:04:19 -04:00
David Spickett 81d2cea690 Revert "[libcxx][test] Use python specified by build rather than system default python"
This reverts commit 9f641c96cb.

The "python" command in gdb uses the python gdb is linked to,
not what "python" would give you if you used it directly in the shell.
2021-10-01 09:45:44 +00:00
David Spickett 5fbe9e40d1 Revert "[libcxx] Run u16string tests for gdb pretty printers"
This reverts commit e9564c3698
due to a report of these tests failing.
2021-10-01 09:45:14 +00:00
Leonard Chan 9f641c96cb [libcxx][test] Use python specified by build rather than system default python
As of e9564c3698, libcxx/gdb/gdb_pretty_printer_test.sh.cpp
fails locally for me because the REQUIRES check for host-has-gdb-with-python
uses python, which for me expands to python 2.7.18. This failure does not seem
to be caught on any upstream builders, potentially because they don't have gdb,
python, or a version of python that makes the test UNSUPPORTED (like python3).

This updates the check to use the python specified by the build (which should
be the python that runs this code), rather than just python.

Differential Revision: https://reviews.llvm.org/D110887
2021-09-30 15:34:30 -07:00
Haowei Wu 138dc27186 Revert "[libc++][libc++abi] Add tests for vendor-specific properties"
This reverts commit 9892d1644f, which
causes clang test failures in libcxx tests.
2021-09-30 11:03:59 -07:00
Louis Dionne 981b12fe89 [libc++][NFC] Remove stray whitespace 2021-09-30 12:18:47 -04:00
Louis Dionne c15bbdeaff [libc++] Add a testing configuration specific to Apple's libc++
Apple's libc++ has a few differences with the LLVM libc++, and it is
necessary to use a custom configuration file to test it properly.

Differential Revision: https://reviews.llvm.org/D110777
2021-09-30 10:51:13 -04:00
Arthur O'Dwyer ae0e037f53 [libc++] Simplify the _LIBCPP_CONSTEXPR markings on starts_with() etc.
This came out of review comments on D110598.

Differential Revision: https://reviews.llvm.org/D110637
2021-09-29 19:00:58 -04:00
Louis Dionne 56cd2f93e0 [libc++] Fix missed rename of libcxx-trunk-shared.cfg.in
There was a race condition between the application of 565d45541f
and the application of 0c874382b9, which led to the latter missing
some occurences.
2021-09-29 18:06:37 -04:00
Louis Dionne 940755515d [libc++] Add the std::views::common range adaptor
Differential Revision: https://reviews.llvm.org/D110433
2021-09-29 17:27:34 -04:00
Louis Dionne 0c874382b9 [libc++] Rename testing configurations to match Lit stdlib= parameter
To reduce confusion, this commit makes sure that the name of the testing
configurations match the convention used for the stdlib= Lit parameter,
since those effectively correspond to each other.
2021-09-29 17:23:29 -04:00
Louis Dionne 9892d1644f [libc++][libc++abi] Add tests for vendor-specific properties
Vendors take libc++ and ship it in various ways. Some vendors might
ship it differently from what upstream LLVM does, i.e. the install
location might be different, some ABI properties might differ, etc.

In the past few years, I've come across several instances where
having a place to test some of these properties would have been
incredibly useful. I also just got bitten by the lack of tests
of that kind, so I'm adding some now.

The tests added by this commit for Apple platforms have numerous
TODOs that capture discrepancies between the upstream LLVM CMake
and the slightly-modified build we perform internally to produce
Apple's system libc++. In the future, the goal would be to upstream
all those differences so that it's possible to build a faithful
Apple system libc++ with the upstream LLVM sources only.

But this isn't only useful for Apple - this lays out the path for
any vendor being able to add their own checks (either upstream or
downstream) to libc++.

Differential Revision: https://reviews.llvm.org/D110736
2021-09-29 17:22:37 -04:00
Louis Dionne b852013dd7 [libc++][ci] Run alternative builds earlier to reduce latency
The Runtimes build is by far our longest CI configuration, so it makes
sense to run it earlier during CI. For consistency, move all the other
jobs from that "section" too.
2021-09-29 17:16:30 -04:00
Arthur O'Dwyer 969359e3b8 [libc++] [compare] Named comparison functions, is_eq etc.
Some of these were previously half-implemented in "ordering.h";
now they're all implemented, and tested.
Note that `constexpr` functions are implicitly `inline`, so the
standard wording omits `inline` on these; but Louis and I agree
that that's surprising and it's better to be explicit about it.

Differential Revision: https://reviews.llvm.org/D110515
2021-09-29 16:03:48 -04:00
Muiez Ahmed 8911fbeafe [NFC] Add contributor name to CREDITS.TXT
Differential Revision: https://reviews.llvm.org/D110650
2021-09-29 14:48:32 -04:00
Martin Storsjö 565d45541f [libcxx] Add a CI configuration for standalone building in llvm-project/runtimes
Generate the llvm-lit script in runtimes/CmakeFiles.txt unless invoked
from llvm/runtimes.

Differential Revision: https://reviews.llvm.org/D109593
2021-09-29 21:37:28 +03:00
Louis Dionne 87b4490b3c [libc++][NFC] Reorganize CI jobs into commented sections 2021-09-29 13:43:52 -04:00
Louis Dionne cbd92b1f45 [libc++] Move libc++ specific tests to `libcxx/test/libcxx`
This is consistent with what we've been doing forever.
2021-09-29 13:13:05 -04:00
David Spickett e9564c3698 [libcxx] Run u16string tests for gdb pretty printers
As far as I can tell these were just missed out when the tests
were first added. No specific reason they should be skipped.
2021-09-29 09:47:16 +01:00
Louis Dionne 86df5a2fa8 [libc++] Simplify std::ranges::subrange
Instead of using a base class to store the members and the optional
size, use [[no_unique_address]] to achieve the same thing without
needing a base class.

Also, as a fly-by:
- Change subrange from struct to class (per the standard)
- Improve the diagnostic for when one doesn't provide a size to the ctor of a sized subrange
- Replace this->member by just member since it's not in a dependent base anymore

This change would be an ABI break due to [[no_unique_address]], but we
haven't shipped ranges anywhere yet, so this shouldn't affect anyone.

Differential Revision: https://reviews.llvm.org/D110370
2021-09-28 17:34:01 -04:00
Louis Dionne d486c5b117 [libc++] Clarify the name of Lit features related to standard library selection
Before this patch, we had features named 'libc++', 'libstdc++' and
'msvc' to describe the three implementations that use our test suite.
This patch renames them to 'stdlib=libc++', 'stdlib=libstdc++', etc
to avoid confusion between MSVC's STL and the MSVC compiler (or Clang
in MSVC mode).

Furthermore, this prepares the terrain for adding support for additional
"implementations" to the test suite. Basically, I'd like to be able to
treat Apple's libc++ differently from LLVM's libc++ for the purpose of
testing, because those effectively behave in different ways in some aspects.
2021-09-28 16:15:25 -04:00
Arthur O'Dwyer a7d084a18d [libc++] [compare] Rip out more vestiges of *_equality. NFCI.
There's really no reason to even have two different enums here,
but *definitely* we shouldn't have *three*, and they don't need
so many synonymous enumerator values.

Differential Revision: https://reviews.llvm.org/D110516
2021-09-28 12:23:41 -04:00
Joe Loser 9451d9da95
[libc++][NFC] s/enable_if<...>::type/enable_if_t<...> in span
There is some use of `enable_if<...>::type` when the rest of the file
uses `enable_if_t`. So, use `enable_if_t` consistently throughout.
2021-09-27 19:21:07 -04:00
Louis Dionne 1e628d0c14 [libc++] Do not enable P1951 before C++23, since it's a breaking change
In reaction to the issues raised by Richard in https://llvm.org/D109066,
this commit does not apply P1951 as a DR in previous standard modes,
since it breaks valid code.

I do believe it should be applied as a DR, however ideally we'd get some
sort of statement from the Committee to this effect (and all implementations
would behave consistently). In the meantime, only implement P1951 starting
with C++23 -- we can always come back and apply it as a DR if that's what
the Committee says.

Differential Revision: https://reviews.llvm.org/D110347
2021-09-27 17:06:44 -04:00
Louis Dionne a64e46880c [libc++][NFC] Update status of old issue LWG2560 -- we implement it properly 2021-09-24 14:22:09 -04:00
Louis Dionne ff0b62dd88 [libc++][NFC] Mark LWG3158 as implemented
It has been implemented in 59e26308e6.
2021-09-24 14:11:52 -04:00
Mark de Wever 15dfe78340 [NFC][libc++] Update clang-format style.
Changes the style as requested by @ldionne in D103368.

Reviewed By: ldionne, #libc, Quuxplusone

Differential Revision: https://reviews.llvm.org/D109835
2021-09-24 19:28:07 +02:00
Louis Dionne 03fb6f04f9 [libc++] Refactor the tests for common_view to reduce duplication 2021-09-24 13:23:44 -04:00
Mark de Wever f881776175 [libc++] Require a C++20 capable compiler.
This enforces libcxx and its benchmarks are compiled by a C++20 capable
compiler. Based on review comments in D103413.

Differential Revision: https://reviews.llvm.org/D110338
2021-09-24 11:38:26 -04:00
Louis Dionne 1295694364 [libc++][NFC] Add missing link to a ranges review 2021-09-24 11:37:38 -04:00
David Spickett 5efafc3e65 Revert "[libcxx][pretty printers] Import gdb module in gdb feature check"
This reverts commit 0c2a454845.

This was my mistake. When gdb can find its data directory it'll
import it automatically. If it can't (like when you're using a
version from a build folder) you need to give it the data
directory path.

We're safe to assume gdb is installed for testing purposes
so it'll import it for us.
2021-09-24 09:11:28 +00:00
David Spickett 0c2a454845 [libcxx][pretty printers] Import gdb module in gdb feature check
Earlier versions of GDB do not do this automatically.
(from my checks 8.3 does not and 9.2 does)
2021-09-24 09:04:44 +00:00
David Spickett 0a36c72dee [libcxx][pretty printers] Check GDB Python scripting support
I found this after upgrading from Ubuntu bionic (gdb 8.1.1) to
Focal (gdb 9.2). (where this test fails, but that's for a
different patch)

9.2 allows you to set breakpoint commands from
Python, which was added in 8.3.
(bintutils a913fffbdee21fdd50e8de0596358be425775678
"Allow breakpoint commands to be set from Python")

The reason this test never failed before was because it did so
silently. "source <python file>" doesn't fail even if that script
raises an Exception.

To fix this extend the gdb lit feature to check that:
* gdb exists
* has Python support
* allows you to set breakpoint commands

Reviewed By: #libc, ldionne

Differential Revision: https://reviews.llvm.org/D110334
2021-09-24 08:32:11 +00:00
Louis Dionne a6406ce18c [libc++][NFC] Refactor the std::reverse_view tests
Mostly, remove the global assumption that all ranges have size 8.
I should have called this out during the initial review.
2021-09-23 18:35:56 -04:00
Louis Dionne e6126faba0 [libc++] Remove unused macro in __config
That macro was being defined but not used anywhere in libc++, so it
must be safe to remove it.

As a fly-by fix, also remove mentions of this macro in other places
in LLVM, to make sure they were not depending on the value defined in
libc++.

Differential Revision: https://reviews.llvm.org/D110289
2021-09-23 13:09:32 -04:00