|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init |
|
| #
2aea8af2 |
| 03-Jul-2022 |
Nikolas Klauser <[email protected]> |
[libc++] Make _LIBCPP_DEBUG_RANDOMIZE_RANGE a function
Reviewed By: ldionne, Mordante, var-const, #libc
Spies: mgorny, libcxx-commits
Differential Revision: https://reviews.llvm.org/D128181
|
|
Revision tags: llvmorg-14.0.6 |
|
| #
23d6cde1 |
| 20-Jun-2022 |
Louis Dionne <[email protected]> |
[libc++] Add a test to pin down the set of transitive public includes
A situation that happens fairly often in libc++ is that we remove some transitive includes in a header (either purposefully or n
[libc++] Add a test to pin down the set of transitive public includes
A situation that happens fairly often in libc++ is that we remove some transitive includes in a header (either purposefully or not) and that ends up breaking users. Of course, we want to be able to remove our transitive includes, however it's also good to have a grip on that to know which commit changed what and when. Furthermore, it's good to accumulate include removals for a couple of releases to avoid breaking users at every release for this reason.
This commit adds a test that should break whenever we remove an include. Hence, it should allow us to track which headers include which other headers transitively, giving us a traceable way to remove headers.
Differential Revision: https://reviews.llvm.org/D128236
show more ...
|
|
Revision tags: llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1 |
|
| #
f3966eaf |
| 01-Apr-2022 |
Louis Dionne <[email protected]> |
[libc++] Make the Debug mode a configuration-time only option
The debug mode has been broken pretty much ever since it was shipped because it was possible to enable the debug mode in user code witho
[libc++] Make the Debug mode a configuration-time only option
The debug mode has been broken pretty much ever since it was shipped because it was possible to enable the debug mode in user code without actually enabling it in the dylib, leading to ODR violations that caused various kinds of failures.
This commit makes the debug mode a knob that is configured when building the library and which can't be changed afterwards. This is less flexible for users, however it will actually work as intended and it will allow us, in the future, to add various kinds of checks that do not assume the same ABI as the normal library. Furthermore, this will make the debug mode more robust, which means that vendors might be more tempted to support it properly, which hasn't been the case with the current debug mode.
This patch shouldn't break any user code, except folks who are building against a library that doesn't have the debug mode enabled and who try to enable the debug mode in their code. Such users will get a compile-time error explaining that this configuration isn't supported anymore.
In the future, we should further increase the granularity of the debug mode checks so that we can cherry-pick which checks to enable, like we do for unspecified behavior randomization.
Differential Revision: https://reviews.llvm.org/D122941
show more ...
|
| #
08f68dfe |
| 07-May-2022 |
Nikolas Klauser <[email protected]> |
[libc++] Add a few more debug wrapper functions
Reviewed By: ldionne, #libc, jloser
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D125176
|
| #
e70533ae |
| 03-Apr-2022 |
Louis Dionne <[email protected]> |
[libc++] Remove unused <iosfwd> include from <__debug>
Differential Revision: https://reviews.llvm.org/D122999
|
| #
cc82a1b0 |
| 23-Mar-2022 |
Louis Dionne <[email protected]> |
[libc++][NFC] Fix include guards and add a missing license header
|
|
Revision tags: llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2 |
|
| #
f86c2b6f |
| 09-Feb-2022 |
Arthur O'Dwyer <[email protected]> |
[libc++] Add `explicit` to a bunch of internal detail ctors.
Notably the following ctors remain non-explicit because they are used as implicit conversions in too many places: * __debug_less(_Compare
[libc++] Add `explicit` to a bunch of internal detail ctors.
Notably the following ctors remain non-explicit because they are used as implicit conversions in too many places: * __debug_less(_Compare&) * __map_iterator(_TreeIterator) * __map_const_iterator(_TreeIterator) * __hash_map_iterator(_HashIterator) * __hash_map_const_iterator(_HashIterator)
Differential Revision: https://reviews.llvm.org/D119894
show more ...
|
| #
318507ed |
| 16-Feb-2022 |
Nikolas Klauser <[email protected]> |
[libc++] Remove a few unneeded _LIBCPP_CXX03_LANG ifdefs
Reviewed By: Quuxplusone, ldionne, #libc
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D119896
|
| #
f87aa19b |
| 14-Feb-2022 |
Louis Dionne <[email protected]> |
[libc++] Move everything related solely to _LIBCPP_ASSERT to its own file
This is the first step towards disentangling the debug mode and assertions in libc++. This patch doesn't make any functional
[libc++] Move everything related solely to _LIBCPP_ASSERT to its own file
This is the first step towards disentangling the debug mode and assertions in libc++. This patch doesn't make any functional change: it simply moves _LIBCPP_ASSERT-related stuff to its own file so as to make it clear that libc++ assertions and the debug mode are different things. Future patches will make it possible to enable assertions without enabling the debug mode.
Differential Revision: https://reviews.llvm.org/D119769
show more ...
|
|
Revision tags: llvmorg-14.0.0-rc1 |
|
| #
506cf6dc |
| 04-Feb-2022 |
Louis Dionne <[email protected]> |
[libc++] Fix modules and benchmarks CI builds when incomplete features are disabled
Differential Revision: https://reviews.llvm.org/D119036
|
|
Revision tags: llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3 |
|
| #
157bbe6a |
| 08-Sep-2021 |
Louis Dionne <[email protected]> |
[libc++] Remove the ability to use the std::nullptr_t emulation in C++03 mode
Back in https://reviews.llvm.org/D109459, we stopped using the C++03 emulation for std::nullptr_t by default, which was
[libc++] Remove the ability to use the std::nullptr_t emulation in C++03 mode
Back in https://reviews.llvm.org/D109459, we stopped using the C++03 emulation for std::nullptr_t by default, which was an ABI break. We still left a knob for users to turn it back on if they were broken by the change, with a note that we would remove that knob after one release.
The time has now come to remove the knob and clean up the std::nullptr_t emulation.
Differential Revision: https://reviews.llvm.org/D114786
show more ...
|
| #
fa6b9e40 |
| 02-Feb-2022 |
Arthur O'Dwyer <[email protected]> |
[libc++] Normalize all our '#pragma GCC system_header', and regression-test.
Now we'll notice if a header forgets to include this magic phrase.
Differential Revision: https://reviews.llvm.org/D1188
[libc++] Normalize all our '#pragma GCC system_header', and regression-test.
Now we'll notice if a header forgets to include this magic phrase.
Differential Revision: https://reviews.llvm.org/D118800
show more ...
|
| #
caf5548c |
| 17-Jan-2022 |
Nikolas Klauser <[email protected]> |
[libc++] Introduce __debug_db_insert_i()
Introduce `__debug_db_insert_i()`
Reviewed By: ldionne, #libc
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D117410
|
| #
42185ad8 |
| 07-Jan-2022 |
Arthur O'Dwyer <[email protected]> |
[libc++] Add tests verifying alphabetical order for several things.
These things are header #includes, CMakeLists.txt, and module.modulemap.
Differential Revision: https://reviews.llvm.org/D116958
|
| #
e3cf7050 |
| 10-Jan-2022 |
Nikolas Klauser <[email protected]> |
[libc++] Introduce __debug_db_insert_c()
There are a lot of ``` #if _LIBCPP_DEBUG_LEVEL == 2 __get_db()->__insert_c(this); #endif ```
This patch introduces `__debug_db_insert_c()` to put the `#
[libc++] Introduce __debug_db_insert_c()
There are a lot of ``` #if _LIBCPP_DEBUG_LEVEL == 2 __get_db()->__insert_c(this); #endif ```
This patch introduces `__debug_db_insert_c()` to put the `#if` in one central place.
Reviewed By: ldionne, #libc
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D116947
show more ...
|
| #
5675b611 |
| 16-Dec-2021 |
Nikolas Klauser <[email protected]> |
[libc++] Disable _LIBCPP_DEBUG_ASSERT during constant evaluation
Disable `_LIBCPP_DEBUG_ASSERT` and debug iterators in <string> during constant evaluation
Reviewed By: ldionne, #libc
Spies: goncha
[libc++] Disable _LIBCPP_DEBUG_ASSERT during constant evaluation
Disable `_LIBCPP_DEBUG_ASSERT` and debug iterators in <string> during constant evaluation
Reviewed By: ldionne, #libc
Spies: goncharov, libcxx-commits
Differential Revision: https://reviews.llvm.org/D115788
show more ...
|
| #
eb8650a7 |
| 17-Nov-2021 |
Louis Dionne <[email protected]> |
[runtimes][NFC] Remove filenames at the top of the license notice
We've stopped doing it in libc++ for a while now because these names would end up rotting as we move things around and copy/paste st
[runtimes][NFC] Remove filenames at the top of the license notice
We've stopped doing it in libc++ for a while now because these names would end up rotting as we move things around and copy/paste stuff. This cleans up all the existing files so as to stop the spreading as people copy-paste headers around.
show more ...
|
|
Revision tags: llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1 |
|
| #
4cd6ca10 |
| 20-Apr-2021 |
Louis Dionne <[email protected]> |
[libc++] NFC: Normalize `#endif //` comment indentation
|
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2 |
|
| #
be4c657b |
| 12-Dec-2020 |
Arthur O'Dwyer <[email protected]> |
[libc++] Consistently replace `::new(__p) T` with `::new ((void*)__p) T`. NFCI.
Everywhere, normalize the whitespace to `::new (EXPR) T`. Everywhere, normalize the spelling of the cast to `(void*)EX
[libc++] Consistently replace `::new(__p) T` with `::new ((void*)__p) T`. NFCI.
Everywhere, normalize the whitespace to `::new (EXPR) T`. Everywhere, normalize the spelling of the cast to `(void*)EXPR`.
Without the cast to `(void*)`, the expression triggers ADL on GCC. (I think this is a GCC bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98249) Even if it doesn't trigger ADL, it still seems incorrect to use any argument that's not exactly `(void*)` because that opens the possibility of overload resolution picking a user-defined overload of `operator new`, which would be wrong.
Differential Revision: https://reviews.llvm.org/D93153
show more ...
|
| #
d586f92c |
| 27-Nov-2020 |
Arthur O'Dwyer <[email protected]> |
[libc++] Consistently replace `std::` qualification with `_VSTD::` or nothing. NFCI.
I used a lot of `git grep` to find places where `std::` was being used outside of comments and assert-messages. T
[libc++] Consistently replace `std::` qualification with `_VSTD::` or nothing. NFCI.
I used a lot of `git grep` to find places where `std::` was being used outside of comments and assert-messages. There were three outcomes:
- Qualified function calls, e.g. `std::move` becomes `_VSTD::move`. This is the most common case.
- Typenames that don't need qualification, e.g. `std::allocator` becomes `allocator`. Leaving these as `_VSTD::allocator` would also be fine, but I decided that removing the qualification is more consistent with existing practice.
- Names that specifically need un-versioned `std::` qualification, or that I wasn't sure about. For example, I didn't touch any code in <atomic>, <math.h>, <new>, or any ext/ or experimental/ headers; and I didn't touch any instances of `std::type_info`.
In some deduction guides, we were accidentally using `class Alloc = typename std::allocator<T>`, despite `std::allocator<T>`'s type-ness not being template-dependent. Because `std::allocator` is a qualified name, this did parse as we intended; but what we meant was simply `class Alloc = allocator<T>`.
Differential Revision: https://reviews.llvm.org/D92250
show more ...
|
|
Revision tags: llvmorg-11.0.1-rc1, llvmorg-11.0.0, llvmorg-11.0.0-rc6 |
|
| #
870827f6 |
| 02-Oct-2020 |
Louis Dionne <[email protected]> |
[libc++] NFCI: Remove the _LIBCPP_DEBUG_MODE helper macro
It was used inconsistently and the name was pretty confusing, so we might as well use `#if _LIBCPP_DEBUG_LEVEL == 2` consistently everywhere.
|
| #
31e82037 |
| 02-Oct-2020 |
Louis Dionne <[email protected]> |
[libc++] NFCI: Simplify macro definitions for the debug mode
The debug mode always had three possibilities: - _LIBCPP_DEBUG is undefined => no assertions - _LIBCPP_DEBUG == 0 => some asserti
[libc++] NFCI: Simplify macro definitions for the debug mode
The debug mode always had three possibilities: - _LIBCPP_DEBUG is undefined => no assertions - _LIBCPP_DEBUG == 0 => some assertions - _LIBCPP_DEBUG == 1 => some assertions + iterator checks
This was documented that way, however the code did not make this clear at all. The discrepancy between _LIBCPP_DEBUG and _LIBCPP_DEBUG_LEVEL was especially confusing. I reworked how the various macros are defined without changing anything else to make the code clearer.
show more ...
|
|
Revision tags: llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3, llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1, llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2, llvmorg-10.0.1-rc1, llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4, llvmorg-10.0.0-rc3, llvmorg-10.0.0-rc2, llvmorg-10.0.0-rc1, llvmorg-11-init, llvmorg-9.0.1, llvmorg-9.0.1-rc3, llvmorg-9.0.1-rc2, llvmorg-9.0.1-rc1 |
|
| #
689ce810 |
| 23-Oct-2019 |
Casey Carter <[email protected]> |
[libc++][NFC] Remove excess trailing newlines from most files
Testing git commit access.
|
|
Revision tags: llvmorg-9.0.0, llvmorg-9.0.0-rc6, llvmorg-9.0.0-rc5, llvmorg-9.0.0-rc4, llvmorg-9.0.0-rc3, llvmorg-9.0.0-rc2, llvmorg-9.0.0-rc1, llvmorg-10-init, llvmorg-8.0.1, llvmorg-8.0.1-rc4, llvmorg-8.0.1-rc3, llvmorg-8.0.1-rc2, llvmorg-8.0.1-rc1 |
|
| #
61b302f9 |
| 18-Mar-2019 |
Eric Fiselier <[email protected]> |
Remove exception throwing debug mode handler support.
Summary: The reason libc++ implemented a throwing debug mode handler was for ease of testing. Specifically, I thought that if a debug violation
Remove exception throwing debug mode handler support.
Summary: The reason libc++ implemented a throwing debug mode handler was for ease of testing. Specifically, I thought that if a debug violation aborted, we could only test one violation per file. This made it impossible to test debug mode. Which throwing behavior we could test more!
However, the throwing approach didn't work either, since there are debug violations underneath noexcept functions. This lead to the introduction of `_NOEXCEPT_DEBUG`, which was only noexcept when debug mode was off.
Having thought more and having grown wiser, `_NOEXCEPT_DEBUG` was a horrible decision. It was viral, it didn't cover all the cases it needed to, and it was observable to the user -- at worst changing the behavior of their program.
This patch removes the throwing debug handler, and rewrites the debug tests using 'fork-ing' style death tests.
Reviewers: mclow.lists, ldionne, thomasanderson
Reviewed By: ldionne
Subscribers: christof, arphaman, libcxx-commits, #libc
Differential Revision: https://reviews.llvm.org/D59166
llvm-svn: 356417
show more ...
|
|
Revision tags: llvmorg-8.0.0, llvmorg-8.0.0-rc5, llvmorg-8.0.0-rc4 |
|
| #
1c014d75 |
| 05-Mar-2019 |
Eric Fiselier <[email protected]> |
Fix -fsanitize=vptr badness in <__debug>
Summary:
This patch fixes a lifetime bug when inserting a new container into the debug database. It is diagnosed by UBSAN when debug mode is enabled. This p
Fix -fsanitize=vptr badness in <__debug>
Summary:
This patch fixes a lifetime bug when inserting a new container into the debug database. It is diagnosed by UBSAN when debug mode is enabled. This patch corrects how nodes are constructed during insertion.
The fix requires unconditionally breaking the debug mode ABI. Users should not expect ABI stability from debug mode.
Reviewers: ldionne, serge-sans-paille, EricWF
Reviewed By: EricWF
Subscribers: mclow.lists, christof, libcxx-commits
Tags: #libc
Differential Revision: https://reviews.llvm.org/D58011
llvm-svn: 355367
show more ...
|