[libcxx-commits] [libcxx] f87aa19 - [libc++] Move everything related solely to _LIBCPP_ASSERT to its own file

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Wed Feb 16 09:49:58 PST 2022


Author: Louis Dionne
Date: 2022-02-16T12:49:50-05:00
New Revision: f87aa19be64499308fc18f92d048c5fa2d3064d9

URL: https://github.com/llvm/llvm-project/commit/f87aa19be64499308fc18f92d048c5fa2d3064d9
DIFF: https://github.com/llvm/llvm-project/commit/f87aa19be64499308fc18f92d048c5fa2d3064d9.diff

LOG: [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

Added: 
    libcxx/include/__assert
    libcxx/src/assert.cpp

Modified: 
    libcxx/include/CMakeLists.txt
    libcxx/include/__algorithm/clamp.h
    libcxx/include/__algorithm/comp_ref_type.h
    libcxx/include/__algorithm/sample.h
    libcxx/include/__coroutine/coroutine_handle.h
    libcxx/include/__debug
    libcxx/include/__filesystem/directory_iterator.h
    libcxx/include/__filesystem/path_iterator.h
    libcxx/include/__format/format_arg.h
    libcxx/include/__format/format_string.h
    libcxx/include/__format/formatter.h
    libcxx/include/__format/formatter_floating_point.h
    libcxx/include/__format/formatter_integral.h
    libcxx/include/__format/formatter_pointer.h
    libcxx/include/__format/formatter_string.h
    libcxx/include/__format/parser_std_format_spec.h
    libcxx/include/__functional/function.h
    libcxx/include/__hash_table
    libcxx/include/__iterator/advance.h
    libcxx/include/__iterator/common_iterator.h
    libcxx/include/__iterator/counted_iterator.h
    libcxx/include/__iterator/next.h
    libcxx/include/__iterator/prev.h
    libcxx/include/__memory/construct_at.h
    libcxx/include/__node_handle
    libcxx/include/__numeric/gcd_lcm.h
    libcxx/include/__ranges/drop_view.h
    libcxx/include/__ranges/iota_view.h
    libcxx/include/__ranges/subrange.h
    libcxx/include/__ranges/view_interface.h
    libcxx/include/__string
    libcxx/include/array
    libcxx/include/bit
    libcxx/include/charconv
    libcxx/include/deque
    libcxx/include/experimental/coroutine
    libcxx/include/experimental/memory_resource
    libcxx/include/fstream
    libcxx/include/future
    libcxx/include/list
    libcxx/include/locale
    libcxx/include/map
    libcxx/include/module.modulemap
    libcxx/include/optional
    libcxx/include/regex
    libcxx/include/set
    libcxx/include/span
    libcxx/include/string
    libcxx/include/string_view
    libcxx/include/thread
    libcxx/include/unordered_map
    libcxx/include/unordered_set
    libcxx/include/vector
    libcxx/src/CMakeLists.txt
    libcxx/src/debug.cpp
    libcxx/src/filesystem/directory_iterator.cpp
    libcxx/src/filesystem/filesystem_common.h
    libcxx/src/filesystem/operations.cpp
    libcxx/src/filesystem/posix_compat.h
    libcxx/src/include/ryu/common.h
    libcxx/src/include/ryu/d2s_intrinsics.h
    libcxx/src/include/to_chars_floating_point.h
    libcxx/src/mutex.cpp
    libcxx/src/ryu/d2fixed.cpp
    libcxx/src/ryu/d2s.cpp
    libcxx/src/ryu/f2s.cpp
    libcxx/src/string.cpp
    libcxx/src/strstream.cpp
    libcxx/src/support/ibm/xlocale_zos.cpp
    libcxx/src/system_error.cpp
    libcxx/test/libcxx/debug/debug_abort.pass.cpp
    libcxx/utils/generate_private_header_tests.py

Removed: 
    


################################################################################
diff  --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt
index fb2b5be63510a..1e5299f00c2e5 100644
--- a/libcxx/include/CMakeLists.txt
+++ b/libcxx/include/CMakeLists.txt
@@ -99,6 +99,7 @@ set(files
   __algorithm/unique_copy.h
   __algorithm/unwrap_iter.h
   __algorithm/upper_bound.h
+  __assert
   __availability
   __bit/bit_cast.h
   __bit/byteswap.h

diff  --git a/libcxx/include/__algorithm/clamp.h b/libcxx/include/__algorithm/clamp.h
index bfc96f81c3314..b3762b85a0bc9 100644
--- a/libcxx/include/__algorithm/clamp.h
+++ b/libcxx/include/__algorithm/clamp.h
@@ -10,8 +10,8 @@
 #define _LIBCPP___ALGORITHM_CLAMP_H
 
 #include <__algorithm/comp.h>
+#include <__assert>
 #include <__config>
-#include <__debug>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header

diff  --git a/libcxx/include/__algorithm/comp_ref_type.h b/libcxx/include/__algorithm/comp_ref_type.h
index 79dda0afb29c9..ed0ed5904a44c 100644
--- a/libcxx/include/__algorithm/comp_ref_type.h
+++ b/libcxx/include/__algorithm/comp_ref_type.h
@@ -9,6 +9,7 @@
 #ifndef _LIBCPP___ALGORITHM_COMP_REF_TYPE_H
 #define _LIBCPP___ALGORITHM_COMP_REF_TYPE_H
 
+#include <__assert>
 #include <__config>
 #include <__debug>
 #include <__utility/declval.h>

diff  --git a/libcxx/include/__algorithm/sample.h b/libcxx/include/__algorithm/sample.h
index 0bf4fd5b97232..523496108217a 100644
--- a/libcxx/include/__algorithm/sample.h
+++ b/libcxx/include/__algorithm/sample.h
@@ -10,8 +10,8 @@
 #define _LIBCPP___ALGORITHM_SAMPLE_H
 
 #include <__algorithm/min.h>
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__random/uniform_int_distribution.h>
 #include <iterator>
 

diff  --git a/libcxx/include/__assert b/libcxx/include/__assert
new file mode 100644
index 0000000000000..d51512dcf379c
--- /dev/null
+++ b/libcxx/include/__assert
@@ -0,0 +1,69 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef _LIBCPP___ASSERT
+#define _LIBCPP___ASSERT
+
+#include <__config>
+#include <iosfwd> // for std::string
+
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
+#  pragma GCC system_header
+#endif
+
+#if _LIBCPP_DEBUG_LEVEL >= 1
+#   define _LIBCPP_ASSERT_IMPL(x, m) ((x) ? (void)0 : ::std::__libcpp_debug_function(::std::__libcpp_debug_info(__FILE__, __LINE__, #x, m)))
+#else
+#   define _LIBCPP_ASSERT_IMPL(x, m) ((void)0)
+#endif
+
+// We do this dance because some of our tests re-define _LIBCPP_ASSERT to something else.
+// In the future, we should find other ways to test our assertions and disallow re-defining
+// _LIBCPP_ASSERT.
+#if !defined(_LIBCPP_ASSERT)
+#   define _LIBCPP_ASSERT(x, m) _LIBCPP_ASSERT_IMPL(x, m)
+#endif
+
+_LIBCPP_BEGIN_NAMESPACE_STD
+
+struct _LIBCPP_TEMPLATE_VIS __libcpp_debug_info {
+  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
+  __libcpp_debug_info()
+      : __file_(nullptr), __line_(-1), __pred_(nullptr), __msg_(nullptr) {}
+  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
+  __libcpp_debug_info(const char* __f, int __l, const char* __p, const char* __m)
+    : __file_(__f), __line_(__l), __pred_(__p), __msg_(__m) {}
+
+  _LIBCPP_FUNC_VIS string what() const;
+
+  const char* __file_;
+  int __line_;
+  const char* __pred_;
+  const char* __msg_;
+};
+
+/// __libcpp_debug_function_type - The type of the assertion failure handler.
+typedef void(*__libcpp_debug_function_type)(__libcpp_debug_info const&);
+
+/// __libcpp_debug_function - The handler function called when a _LIBCPP_ASSERT
+///    fails.
+extern _LIBCPP_EXPORTED_FROM_ABI __libcpp_debug_function_type __libcpp_debug_function;
+
+/// __libcpp_abort_debug_function - A debug handler that aborts when called.
+_LIBCPP_NORETURN _LIBCPP_FUNC_VIS
+void __libcpp_abort_debug_function(__libcpp_debug_info const&);
+
+/// __libcpp_set_debug_function - Set the debug handler to the specified
+///    function.
+_LIBCPP_FUNC_VIS
+bool __libcpp_set_debug_function(__libcpp_debug_function_type __func);
+
+_LIBCPP_END_NAMESPACE_STD
+
+#endif // _LIBCPP___ASSERT

diff  --git a/libcxx/include/__coroutine/coroutine_handle.h b/libcxx/include/__coroutine/coroutine_handle.h
index ad399c86f8b77..4bf323789217e 100644
--- a/libcxx/include/__coroutine/coroutine_handle.h
+++ b/libcxx/include/__coroutine/coroutine_handle.h
@@ -9,8 +9,8 @@
 #ifndef _LIBCPP___COROUTINE_COROUTINE_HANDLE_H
 #define _LIBCPP___COROUTINE_COROUTINE_HANDLE_H
 
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__functional/hash.h>
 #include <__memory/addressof.h>
 #include <compare>

diff  --git a/libcxx/include/__debug b/libcxx/include/__debug
index 5d0b5bf57f4ea..207591cd4058f 100644
--- a/libcxx/include/__debug
+++ b/libcxx/include/__debug
@@ -10,6 +10,7 @@
 #ifndef _LIBCPP_DEBUG_H
 #define _LIBCPP_DEBUG_H
 
+#include <__assert>
 #include <__config>
 #include <iosfwd>
 #include <type_traits>
@@ -24,57 +25,16 @@
 #   include <cstdlib>
 #endif
 
-#if _LIBCPP_DEBUG_LEVEL == 0
+#if _LIBCPP_DEBUG_LEVEL == 0 || _LIBCPP_DEBUG_LEVEL == 1
 #   define _LIBCPP_DEBUG_ASSERT(x, m) ((void)0)
-#   define _LIBCPP_ASSERT_IMPL(x, m) ((void)0)
-#elif _LIBCPP_DEBUG_LEVEL == 1
-#   define _LIBCPP_DEBUG_ASSERT(x, m) ((void)0)
-#   define _LIBCPP_ASSERT_IMPL(x, m) ((x) ? (void)0 : ::std::__libcpp_debug_function(::std::__libcpp_debug_info(__FILE__, __LINE__, #x, m)))
 #elif _LIBCPP_DEBUG_LEVEL == 2
 #   define _LIBCPP_DEBUG_ASSERT(x, m) _LIBCPP_ASSERT(::std::__libcpp_is_constant_evaluated() || (x), m)
-#   define _LIBCPP_ASSERT_IMPL(x, m) ((x) ? (void)0 : ::std::__libcpp_debug_function(::std::__libcpp_debug_info(__FILE__, __LINE__, #x, m)))
 #else
 #   error _LIBCPP_DEBUG_LEVEL must be one of 0, 1, 2
 #endif
 
-#if !defined(_LIBCPP_ASSERT)
-#   define _LIBCPP_ASSERT(x, m) _LIBCPP_ASSERT_IMPL(x, m)
-#endif
-
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-struct _LIBCPP_TEMPLATE_VIS __libcpp_debug_info {
-  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
-  __libcpp_debug_info()
-      : __file_(nullptr), __line_(-1), __pred_(nullptr), __msg_(nullptr) {}
-  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
-  __libcpp_debug_info(const char* __f, int __l, const char* __p, const char* __m)
-    : __file_(__f), __line_(__l), __pred_(__p), __msg_(__m) {}
-
-  _LIBCPP_FUNC_VIS string what() const;
-
-  const char* __file_;
-  int __line_;
-  const char* __pred_;
-  const char* __msg_;
-};
-
-/// __libcpp_debug_function_type - The type of the assertion failure handler.
-typedef void(*__libcpp_debug_function_type)(__libcpp_debug_info const&);
-
-/// __libcpp_debug_function - The handler function called when a _LIBCPP_ASSERT
-///    fails.
-extern _LIBCPP_EXPORTED_FROM_ABI __libcpp_debug_function_type __libcpp_debug_function;
-
-/// __libcpp_abort_debug_function - A debug handler that aborts when called.
-_LIBCPP_NORETURN _LIBCPP_FUNC_VIS
-void __libcpp_abort_debug_function(__libcpp_debug_info const&);
-
-/// __libcpp_set_debug_function - Set the debug handler to the specified
-///    function.
-_LIBCPP_FUNC_VIS
-bool __libcpp_set_debug_function(__libcpp_debug_function_type __func);
-
 #if _LIBCPP_DEBUG_LEVEL == 2 || defined(_LIBCPP_BUILDING_LIBRARY)
 
 struct _LIBCPP_TYPE_VIS __c_node;

diff  --git a/libcxx/include/__filesystem/directory_iterator.h b/libcxx/include/__filesystem/directory_iterator.h
index 4d45077b4ff30..87bbbfac717bb 100644
--- a/libcxx/include/__filesystem/directory_iterator.h
+++ b/libcxx/include/__filesystem/directory_iterator.h
@@ -10,9 +10,9 @@
 #ifndef _LIBCPP___FILESYSTEM_DIRECTORY_ITERATOR_H
 #define _LIBCPP___FILESYSTEM_DIRECTORY_ITERATOR_H
 
+#include <__assert>
 #include <__availability>
 #include <__config>
-#include <__debug>
 #include <__filesystem/directory_entry.h>
 #include <__filesystem/directory_options.h>
 #include <__filesystem/path.h>

diff  --git a/libcxx/include/__filesystem/path_iterator.h b/libcxx/include/__filesystem/path_iterator.h
index 0dfb04d562650..6f2baf8f7a298 100644
--- a/libcxx/include/__filesystem/path_iterator.h
+++ b/libcxx/include/__filesystem/path_iterator.h
@@ -10,9 +10,9 @@
 #ifndef _LIBCPP___FILESYSTEM_PATH_ITERATOR_H
 #define _LIBCPP___FILESYSTEM_PATH_ITERATOR_H
 
+#include <__assert>
 #include <__availability>
 #include <__config>
-#include <__debug>
 #include <__filesystem/path.h>
 #include <__iterator/iterator_traits.h>
 #include <cstddef>

diff  --git a/libcxx/include/__format/format_arg.h b/libcxx/include/__format/format_arg.h
index 8db42cdb98019..5e1565bf15956 100644
--- a/libcxx/include/__format/format_arg.h
+++ b/libcxx/include/__format/format_arg.h
@@ -10,6 +10,7 @@
 #ifndef _LIBCPP___FORMAT_FORMAT_ARG_H
 #define _LIBCPP___FORMAT_FORMAT_ARG_H
 
+#include <__assert>
 #include <__concepts/arithmetic.h>
 #include <__config>
 #include <__format/format_error.h>

diff  --git a/libcxx/include/__format/format_string.h b/libcxx/include/__format/format_string.h
index 10fb471c35dc1..32af6609e7b7d 100644
--- a/libcxx/include/__format/format_string.h
+++ b/libcxx/include/__format/format_string.h
@@ -10,8 +10,8 @@
 #ifndef _LIBCPP___FORMAT_FORMAT_STRING_H
 #define _LIBCPP___FORMAT_FORMAT_STRING_H
 
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__format/format_error.h>
 #include <cstddef>
 #include <cstdint>

diff  --git a/libcxx/include/__format/formatter.h b/libcxx/include/__format/formatter.h
index 7e1ae314b5956..f9e0b6c84b7b7 100644
--- a/libcxx/include/__format/formatter.h
+++ b/libcxx/include/__format/formatter.h
@@ -13,6 +13,7 @@
 #include <__algorithm/copy.h>
 #include <__algorithm/fill_n.h>
 #include <__algorithm/transform.h>
+#include <__assert>
 #include <__availability>
 #include <__config>
 #include <__format/format_error.h>

diff  --git a/libcxx/include/__format/formatter_floating_point.h b/libcxx/include/__format/formatter_floating_point.h
index c29cda48a98e7..aa32815af2a48 100644
--- a/libcxx/include/__format/formatter_floating_point.h
+++ b/libcxx/include/__format/formatter_floating_point.h
@@ -17,9 +17,9 @@
 #include <__algorithm/min.h>
 #include <__algorithm/rotate.h>
 #include <__algorithm/transform.h>
+#include <__assert>
 #include <__concepts/arithmetic.h>
 #include <__config>
-#include <__debug>
 #include <__format/format_error.h>
 #include <__format/format_fwd.h>
 #include <__format/format_string.h>

diff  --git a/libcxx/include/__format/formatter_integral.h b/libcxx/include/__format/formatter_integral.h
index 4f82b34462db7..836082671c5aa 100644
--- a/libcxx/include/__format/formatter_integral.h
+++ b/libcxx/include/__format/formatter_integral.h
@@ -14,6 +14,7 @@
 #include <__algorithm/copy_n.h>
 #include <__algorithm/fill_n.h>
 #include <__algorithm/transform.h>
+#include <__assert>
 #include <__config>
 #include <__format/format_error.h>
 #include <__format/format_fwd.h>

diff  --git a/libcxx/include/__format/formatter_pointer.h b/libcxx/include/__format/formatter_pointer.h
index 15b6764000a0e..83d21e1c50e6c 100644
--- a/libcxx/include/__format/formatter_pointer.h
+++ b/libcxx/include/__format/formatter_pointer.h
@@ -11,9 +11,9 @@
 #define _LIBCPP___FORMAT_FORMATTER_POINTER_H
 
 #include <__algorithm/copy.h>
+#include <__assert>
 #include <__availability>
 #include <__config>
-#include <__debug>
 #include <__format/format_error.h>
 #include <__format/format_fwd.h>
 #include <__format/formatter.h>

diff  --git a/libcxx/include/__format/formatter_string.h b/libcxx/include/__format/formatter_string.h
index 01e2bafda4edd..54aa1215d99e5 100644
--- a/libcxx/include/__format/formatter_string.h
+++ b/libcxx/include/__format/formatter_string.h
@@ -10,6 +10,7 @@
 #ifndef _LIBCPP___FORMAT_FORMATTER_STRING_H
 #define _LIBCPP___FORMAT_FORMATTER_STRING_H
 
+#include <__assert>
 #include <__config>
 #include <__format/format_error.h>
 #include <__format/format_fwd.h>

diff  --git a/libcxx/include/__format/parser_std_format_spec.h b/libcxx/include/__format/parser_std_format_spec.h
index ca4eae1fa9182..57f4e46e561b1 100644
--- a/libcxx/include/__format/parser_std_format_spec.h
+++ b/libcxx/include/__format/parser_std_format_spec.h
@@ -12,8 +12,8 @@
 
 #include <__algorithm/find_if.h>
 #include <__algorithm/min.h>
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__format/format_arg.h>
 #include <__format/format_error.h>
 #include <__format/format_string.h>

diff  --git a/libcxx/include/__functional/function.h b/libcxx/include/__functional/function.h
index 170987693d5f8..4698c8c2d42e0 100644
--- a/libcxx/include/__functional/function.h
+++ b/libcxx/include/__functional/function.h
@@ -10,8 +10,8 @@
 #ifndef _LIBCPP___FUNCTIONAL_FUNCTION_H
 #define _LIBCPP___FUNCTIONAL_FUNCTION_H
 
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__functional/binary_function.h>
 #include <__functional/invoke.h>
 #include <__functional/unary_function.h>

diff  --git a/libcxx/include/__hash_table b/libcxx/include/__hash_table
index 6b1f65c283286..43c15d59a1932 100644
--- a/libcxx/include/__hash_table
+++ b/libcxx/include/__hash_table
@@ -12,6 +12,7 @@
 
 #include <__algorithm/max.h>
 #include <__algorithm/min.h>
+#include <__assert>
 #include <__bits> // __libcpp_clz
 #include <__config>
 #include <__debug>

diff  --git a/libcxx/include/__iterator/advance.h b/libcxx/include/__iterator/advance.h
index 7b07951ef6bc2..da6bf052525c7 100644
--- a/libcxx/include/__iterator/advance.h
+++ b/libcxx/include/__iterator/advance.h
@@ -10,8 +10,8 @@
 #ifndef _LIBCPP___ITERATOR_ADVANCE_H
 #define _LIBCPP___ITERATOR_ADVANCE_H
 
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__iterator/concepts.h>
 #include <__iterator/incrementable_traits.h>
 #include <__iterator/iterator_traits.h>

diff  --git a/libcxx/include/__iterator/common_iterator.h b/libcxx/include/__iterator/common_iterator.h
index ad74dbd3df563..505e4f1f3f0db 100644
--- a/libcxx/include/__iterator/common_iterator.h
+++ b/libcxx/include/__iterator/common_iterator.h
@@ -10,8 +10,8 @@
 #ifndef _LIBCPP___ITERATOR_COMMON_ITERATOR_H
 #define _LIBCPP___ITERATOR_COMMON_ITERATOR_H
 
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__iterator/concepts.h>
 #include <__iterator/incrementable_traits.h>
 #include <__iterator/iter_move.h>

diff  --git a/libcxx/include/__iterator/counted_iterator.h b/libcxx/include/__iterator/counted_iterator.h
index c67743fbe37ff..826d5de51f972 100644
--- a/libcxx/include/__iterator/counted_iterator.h
+++ b/libcxx/include/__iterator/counted_iterator.h
@@ -9,8 +9,8 @@
 #ifndef _LIBCPP___ITERATOR_COUNTED_ITERATOR_H
 #define _LIBCPP___ITERATOR_COUNTED_ITERATOR_H
 
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__iterator/concepts.h>
 #include <__iterator/default_sentinel.h>
 #include <__iterator/incrementable_traits.h>

diff  --git a/libcxx/include/__iterator/next.h b/libcxx/include/__iterator/next.h
index 9f104bc7af56d..fae5989c2aaf4 100644
--- a/libcxx/include/__iterator/next.h
+++ b/libcxx/include/__iterator/next.h
@@ -10,8 +10,8 @@
 #ifndef _LIBCPP___ITERATOR_NEXT_H
 #define _LIBCPP___ITERATOR_NEXT_H
 
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__iterator/advance.h>
 #include <__iterator/concepts.h>
 #include <__iterator/incrementable_traits.h>

diff  --git a/libcxx/include/__iterator/prev.h b/libcxx/include/__iterator/prev.h
index 9779a8d2aadb9..5839621eefe1e 100644
--- a/libcxx/include/__iterator/prev.h
+++ b/libcxx/include/__iterator/prev.h
@@ -10,8 +10,8 @@
 #ifndef _LIBCPP___ITERATOR_PREV_H
 #define _LIBCPP___ITERATOR_PREV_H
 
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__iterator/advance.h>
 #include <__iterator/concepts.h>
 #include <__iterator/incrementable_traits.h>

diff  --git a/libcxx/include/__memory/construct_at.h b/libcxx/include/__memory/construct_at.h
index d0328f8905762..8a7bf40d7f716 100644
--- a/libcxx/include/__memory/construct_at.h
+++ b/libcxx/include/__memory/construct_at.h
@@ -10,8 +10,8 @@
 #ifndef _LIBCPP___MEMORY_CONSTRUCT_AT_H
 #define _LIBCPP___MEMORY_CONSTRUCT_AT_H
 
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__iterator/access.h>
 #include <__memory/addressof.h>
 #include <__memory/voidify.h>

diff  --git a/libcxx/include/__node_handle b/libcxx/include/__node_handle
index fc35d0ff0b4f6..71309be62f3ca 100644
--- a/libcxx/include/__node_handle
+++ b/libcxx/include/__node_handle
@@ -58,8 +58,8 @@ public:
 
 */
 
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <memory>
 #include <optional>
 

diff  --git a/libcxx/include/__numeric/gcd_lcm.h b/libcxx/include/__numeric/gcd_lcm.h
index 34c0e533c928b..9a53a001f2114 100644
--- a/libcxx/include/__numeric/gcd_lcm.h
+++ b/libcxx/include/__numeric/gcd_lcm.h
@@ -10,8 +10,8 @@
 #ifndef _LIBCPP___NUMERIC_GCD_LCM_H
 #define _LIBCPP___NUMERIC_GCD_LCM_H
 
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <limits>
 #include <type_traits>
 

diff  --git a/libcxx/include/__ranges/drop_view.h b/libcxx/include/__ranges/drop_view.h
index 3fdf577eb3229..079a74d4b84c2 100644
--- a/libcxx/include/__ranges/drop_view.h
+++ b/libcxx/include/__ranges/drop_view.h
@@ -9,8 +9,8 @@
 #ifndef _LIBCPP___RANGES_DROP_VIEW_H
 #define _LIBCPP___RANGES_DROP_VIEW_H
 
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__iterator/concepts.h>
 #include <__iterator/iterator_traits.h>
 #include <__iterator/next.h>

diff  --git a/libcxx/include/__ranges/iota_view.h b/libcxx/include/__ranges/iota_view.h
index 389034e92b125..b7c099e049007 100644
--- a/libcxx/include/__ranges/iota_view.h
+++ b/libcxx/include/__ranges/iota_view.h
@@ -9,6 +9,7 @@
 #ifndef _LIBCPP___RANGES_IOTA_VIEW_H
 #define _LIBCPP___RANGES_IOTA_VIEW_H
 
+#include <__assert>
 #include <__compare/three_way_comparable.h>
 #include <__concepts/arithmetic.h>
 #include <__concepts/constructible.h>
@@ -20,7 +21,6 @@
 #include <__concepts/semiregular.h>
 #include <__concepts/totally_ordered.h>
 #include <__config>
-#include <__debug>
 #include <__functional/ranges_operations.h>
 #include <__iterator/concepts.h>
 #include <__iterator/incrementable_traits.h>

diff  --git a/libcxx/include/__ranges/subrange.h b/libcxx/include/__ranges/subrange.h
index 57f046166ef91..c54f7710fce64 100644
--- a/libcxx/include/__ranges/subrange.h
+++ b/libcxx/include/__ranges/subrange.h
@@ -9,13 +9,13 @@
 #ifndef _LIBCPP___RANGES_SUBRANGE_H
 #define _LIBCPP___RANGES_SUBRANGE_H
 
+#include <__assert>
 #include <__concepts/constructible.h>
 #include <__concepts/convertible_to.h>
 #include <__concepts/copyable.h>
 #include <__concepts/derived_from.h>
 #include <__concepts/
diff erent_from.h>
 #include <__config>
-#include <__debug>
 #include <__iterator/advance.h>
 #include <__iterator/concepts.h>
 #include <__iterator/incrementable_traits.h>

diff  --git a/libcxx/include/__ranges/view_interface.h b/libcxx/include/__ranges/view_interface.h
index b0794b02b963b..eecc47511139e 100644
--- a/libcxx/include/__ranges/view_interface.h
+++ b/libcxx/include/__ranges/view_interface.h
@@ -9,10 +9,10 @@
 #ifndef _LIBCPP___RANGES_VIEW_INTERFACE_H
 #define _LIBCPP___RANGES_VIEW_INTERFACE_H
 
+#include <__assert>
 #include <__concepts/derived_from.h>
 #include <__concepts/same_as.h>
 #include <__config>
-#include <__debug>
 #include <__iterator/concepts.h>
 #include <__iterator/iterator_traits.h>
 #include <__iterator/prev.h>

diff  --git a/libcxx/include/__string b/libcxx/include/__string
index 60a67d4840cd8..26aa619f21068 100644
--- a/libcxx/include/__string
+++ b/libcxx/include/__string
@@ -17,7 +17,9 @@
 #include <__algorithm/find_end.h>
 #include <__algorithm/find_first_of.h>
 #include <__algorithm/min.h>
+#include <__assert>
 #include <__config>
+#include <__debug>
 #include <__functional/hash.h>     // for __murmur2_or_cityhash
 #include <__iterator/iterator_traits.h>
 #include <cstdint>     // for uint_least16_t
@@ -30,8 +32,6 @@
 #   include <cwchar> // for wmemcpy
 #endif
 
-#include <__debug>
-
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
 #endif

diff  --git a/libcxx/include/array b/libcxx/include/array
index e55ee43995676..314d24935a431 100644
--- a/libcxx/include/array
+++ b/libcxx/include/array
@@ -112,8 +112,8 @@ template <size_t I, class T, size_t N> const T&& get(const array<T, N>&&) noexce
 #include <__algorithm/fill_n.h>
 #include <__algorithm/lexicographical_compare.h>
 #include <__algorithm/swap_ranges.h>
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__tuple>
 #include <__utility/unreachable.h>
 #include <iterator>

diff  --git a/libcxx/include/bit b/libcxx/include/bit
index 16c7987d0f9f2..7f9318ecde1ee 100644
--- a/libcxx/include/bit
+++ b/libcxx/include/bit
@@ -61,11 +61,11 @@ namespace std {
 
 */
 
+#include <__assert>
 #include <__bit/bit_cast.h>
 #include <__bit/byteswap.h>
 #include <__bits> // __libcpp_clz
 #include <__config>
-#include <__debug>
 #include <limits>
 #include <type_traits>
 #include <version>

diff  --git a/libcxx/include/charconv b/libcxx/include/charconv
index 8a953b049c9e8..86cbbd8c9a56e 100644
--- a/libcxx/include/charconv
+++ b/libcxx/include/charconv
@@ -77,6 +77,7 @@ namespace std {
 
 */
 
+#include <__assert>
 #include <__availability>
 #include <__bits>
 #include <__charconv/chars_format.h>

diff  --git a/libcxx/include/deque b/libcxx/include/deque
index fc9647516a22b..b0fd1487f3791 100644
--- a/libcxx/include/deque
+++ b/libcxx/include/deque
@@ -169,8 +169,8 @@ template <class T, class Allocator, class Predicate>
 #include <__algorithm/remove.h>
 #include <__algorithm/remove_if.h>
 #include <__algorithm/unwrap_iter.h>
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__iterator/iterator_traits.h>
 #include <__split_buffer>
 #include <__utility/forward.h>

diff  --git a/libcxx/include/experimental/coroutine b/libcxx/include/experimental/coroutine
index d14bd26401fd0..5a3a095ad1045 100644
--- a/libcxx/include/experimental/coroutine
+++ b/libcxx/include/experimental/coroutine
@@ -45,7 +45,7 @@ template <class P> struct hash<coroutine_handle<P>>;
 
  */
 
-#include <__debug>
+#include <__assert>
 #include <cstddef>
 #include <experimental/__config>
 #include <functional>

diff  --git a/libcxx/include/experimental/memory_resource b/libcxx/include/experimental/memory_resource
index da3e1033eb1e6..098e25f1261f5 100644
--- a/libcxx/include/experimental/memory_resource
+++ b/libcxx/include/experimental/memory_resource
@@ -64,7 +64,7 @@ namespace pmr {
 
  */
 
-#include <__debug>
+#include <__assert>
 #include <__tuple>
 #include <cstddef>
 #include <cstdlib>

diff  --git a/libcxx/include/fstream b/libcxx/include/fstream
index d7d8fb1ce9c4f..80bda63755c64 100644
--- a/libcxx/include/fstream
+++ b/libcxx/include/fstream
@@ -180,9 +180,9 @@ typedef basic_fstream<wchar_t> wfstream;
 */
 
 #include <__algorithm/max.h>
+#include <__assert>
 #include <__availability>
 #include <__config>
-#include <__debug>
 #include <__locale>
 #include <__utility/unreachable.h>
 #include <cstdio>

diff  --git a/libcxx/include/future b/libcxx/include/future
index d49bc809783bf..00f5a68ac6b65 100644
--- a/libcxx/include/future
+++ b/libcxx/include/future
@@ -361,9 +361,9 @@ template <class R, class Alloc> struct uses_allocator<packaged_task<R>, Alloc>;
 
 */
 
+#include <__assert>
 #include <__availability>
 #include <__config>
-#include <__debug>
 #include <__memory/allocator_arg_t.h>
 #include <__memory/uses_allocator.h>
 #include <__utility/auto_cast.h>

diff  --git a/libcxx/include/list b/libcxx/include/list
index c643cb53dba10..ac2e466e95c2d 100644
--- a/libcxx/include/list
+++ b/libcxx/include/list
@@ -184,6 +184,7 @@ template <class T, class Allocator, class Predicate>
 #include <__algorithm/equal.h>
 #include <__algorithm/lexicographical_compare.h>
 #include <__algorithm/min.h>
+#include <__assert>
 #include <__config>
 #include <__debug>
 #include <__utility/forward.h>

diff  --git a/libcxx/include/locale b/libcxx/include/locale
index fa82d44130737..fd605e320a681 100644
--- a/libcxx/include/locale
+++ b/libcxx/include/locale
@@ -192,6 +192,7 @@ template <class charT> class messages_byname;
 #include <__algorithm/max.h>
 #include <__algorithm/reverse.h>
 #include <__algorithm/unwrap_iter.h>
+#include <__assert>
 #include <__config>
 #include <__debug>
 #include <__locale>

diff  --git a/libcxx/include/map b/libcxx/include/map
index a68c6d1c5d344..551edc58cc221 100644
--- a/libcxx/include/map
+++ b/libcxx/include/map
@@ -530,8 +530,8 @@ erase_if(multimap<Key, T, Compare, Allocator>& c, Predicate pred);  // C++20
 
 #include <__algorithm/equal.h>
 #include <__algorithm/lexicographical_compare.h>
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__functional/is_transparent.h>
 #include <__iterator/iterator_traits.h>
 #include <__node_handle>

diff  --git a/libcxx/include/module.modulemap b/libcxx/include/module.modulemap
index 95ff1ecddd69f..a44493968db7e 100644
--- a/libcxx/include/module.modulemap
+++ b/libcxx/include/module.modulemap
@@ -989,6 +989,7 @@ module std [system] {
 
   // __config not modularised due to a bug in Clang
   // FIXME: These should be private.
+  module __assert            {         header "__assert"            export * }
   module __availability      { private header "__availability"      export * }
   module __bit_reference     { private header "__bit_reference"     export * }
   module __bits              { private header "__bits"              export * }

diff  --git a/libcxx/include/optional b/libcxx/include/optional
index aa299f7b2d09e..b20081d0e1b99 100644
--- a/libcxx/include/optional
+++ b/libcxx/include/optional
@@ -158,10 +158,10 @@ template<class T>
 
 */
 
+#include <__assert>
 #include <__availability>
 #include <__concepts/invocable.h>
 #include <__config>
-#include <__debug>
 #include <compare>
 #include <functional>
 #include <initializer_list>

diff  --git a/libcxx/include/regex b/libcxx/include/regex
index dadd7b9dce72d..68922f66e4c2b 100644
--- a/libcxx/include/regex
+++ b/libcxx/include/regex
@@ -763,8 +763,8 @@ typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator;
 */
 
 #include <__algorithm/find.h>
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__iterator/wrap_iter.h>
 #include <__locale>
 #include <compare>

diff  --git a/libcxx/include/set b/libcxx/include/set
index b346e5707d6ea..be117d0b8fa81 100644
--- a/libcxx/include/set
+++ b/libcxx/include/set
@@ -473,8 +473,8 @@ erase_if(multiset<Key, Compare, Allocator>& c, Predicate pred);  // C++20
 
 #include <__algorithm/equal.h>
 #include <__algorithm/lexicographical_compare.h>
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__functional/is_transparent.h>
 #include <__iterator/iterator_traits.h>
 #include <__node_handle>

diff  --git a/libcxx/include/span b/libcxx/include/span
index 66897406898f5..46df783550b2e 100644
--- a/libcxx/include/span
+++ b/libcxx/include/span
@@ -127,6 +127,7 @@ template<class R>
 
 */
 
+#include <__assert>
 #include <__config>
 #include <__debug>
 #include <__iterator/concepts.h>

diff  --git a/libcxx/include/string b/libcxx/include/string
index 3e7f2e9fe6aa3..892df770756e2 100644
--- a/libcxx/include/string
+++ b/libcxx/include/string
@@ -522,6 +522,7 @@ basic_string<char32_t> operator "" s( const char32_t *str, size_t len ); // C++1
 #include <__algorithm/min.h>
 #include <__algorithm/remove.h>
 #include <__algorithm/remove_if.h>
+#include <__assert>
 #include <__config>
 #include <__debug>
 #include <__ios/fpos.h>

diff  --git a/libcxx/include/string_view b/libcxx/include/string_view
index a5256fb4dc547..dd9239aaff655 100644
--- a/libcxx/include/string_view
+++ b/libcxx/include/string_view
@@ -196,8 +196,8 @@ namespace std {
 */
 
 #include <__algorithm/min.h>
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__ranges/concepts.h>
 #include <__ranges/data.h>
 #include <__ranges/enable_borrowed_range.h>

diff  --git a/libcxx/include/thread b/libcxx/include/thread
index 5681f9d97386e..5aa698e1e136d 100644
--- a/libcxx/include/thread
+++ b/libcxx/include/thread
@@ -82,8 +82,8 @@ void sleep_for(const chrono::duration<Rep, Period>& rel_time);
 
 */
 
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <__mutex_base>
 #include <__thread/poll_with_backoff.h>
 #include <__thread/timed_backoff_policy.h>

diff  --git a/libcxx/include/unordered_map b/libcxx/include/unordered_map
index 34c3d184a6085..c8545489507fd 100644
--- a/libcxx/include/unordered_map
+++ b/libcxx/include/unordered_map
@@ -515,6 +515,7 @@ template <class Key, class T, class Hash, class Pred, class Alloc>
 */
 
 #include <__algorithm/is_permutation.h>
+#include <__assert>
 #include <__config>
 #include <__debug>
 #include <__functional/is_transparent.h>

diff  --git a/libcxx/include/unordered_set b/libcxx/include/unordered_set
index bf972be44ed82..2f902cc79341d 100644
--- a/libcxx/include/unordered_set
+++ b/libcxx/include/unordered_set
@@ -460,6 +460,7 @@ template <class Value, class Hash, class Pred, class Alloc>
 */
 
 #include <__algorithm/is_permutation.h>
+#include <__assert>
 #include <__config>
 #include <__debug>
 #include <__functional/is_transparent.h>

diff  --git a/libcxx/include/vector b/libcxx/include/vector
index 26683ae238e9c..57d35064508e6 100644
--- a/libcxx/include/vector
+++ b/libcxx/include/vector
@@ -279,6 +279,7 @@ erase_if(vector<T, Allocator>& c, Predicate pred);    // C++20
 #include <__algorithm/remove_if.h>
 #include <__algorithm/rotate.h>
 #include <__algorithm/unwrap_iter.h>
+#include <__assert>
 #include <__bit_reference>
 #include <__config>
 #include <__debug>

diff  --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt
index 12dcdf9544055..3395003c373ba 100644
--- a/libcxx/src/CMakeLists.txt
+++ b/libcxx/src/CMakeLists.txt
@@ -65,6 +65,7 @@ set(LIBCXX_SOURCES
 
 if (LIBCXX_ENABLE_DEBUG_MODE_SUPPORT)
   list(APPEND LIBCXX_SOURCES
+    assert.cpp
     debug.cpp
     )
 endif()

diff  --git a/libcxx/src/assert.cpp b/libcxx/src/assert.cpp
new file mode 100644
index 0000000000000..40c51f872bcd9
--- /dev/null
+++ b/libcxx/src/assert.cpp
@@ -0,0 +1,38 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include <__assert>
+#include <__config>
+#include <cstdio>
+#include <cstdlib>
+#include <string>
+
+_LIBCPP_BEGIN_NAMESPACE_STD
+
+std::string __libcpp_debug_info::what() const {
+  string msg = __file_;
+  msg += ":" + std::to_string(__line_) + ": _LIBCPP_ASSERT '";
+  msg += __pred_;
+  msg += "' failed. ";
+  msg += __msg_;
+  return msg;
+}
+
+_LIBCPP_NORETURN void __libcpp_abort_debug_function(__libcpp_debug_info const& info) {
+    std::fprintf(stderr, "%s\n", info.what().c_str());
+    std::abort();
+}
+
+constinit __libcpp_debug_function_type __libcpp_debug_function = __libcpp_abort_debug_function;
+
+bool __libcpp_set_debug_function(__libcpp_debug_function_type __func) {
+  __libcpp_debug_function = __func;
+  return true;
+}
+
+_LIBCPP_END_NAMESPACE_STD

diff  --git a/libcxx/src/debug.cpp b/libcxx/src/debug.cpp
index 14a75b10f742e..8f1d328f0e0f4 100644
--- a/libcxx/src/debug.cpp
+++ b/libcxx/src/debug.cpp
@@ -6,6 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include <__assert>
 #include <__config>
 #include <__debug>
 #include <__hash_table>
@@ -23,26 +24,6 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-std::string __libcpp_debug_info::what() const {
-  string msg = __file_;
-  msg += ":" + to_string(__line_) + ": _LIBCPP_ASSERT '";
-  msg += __pred_;
-  msg += "' failed. ";
-  msg += __msg_;
-  return msg;
-}
-_LIBCPP_NORETURN void __libcpp_abort_debug_function(__libcpp_debug_info const& info) {
-    std::fprintf(stderr, "%s\n", info.what().c_str());
-    std::abort();
-}
-
-constinit __libcpp_debug_function_type __libcpp_debug_function = __libcpp_abort_debug_function;
-
-bool __libcpp_set_debug_function(__libcpp_debug_function_type __func) {
-  __libcpp_debug_function = __func;
-  return true;
-}
-
 _LIBCPP_FUNC_VIS
 __libcpp_db*
 __get_db()

diff  --git a/libcxx/src/filesystem/directory_iterator.cpp b/libcxx/src/filesystem/directory_iterator.cpp
index c9294f7a328bb..8b91929df8770 100644
--- a/libcxx/src/filesystem/directory_iterator.cpp
+++ b/libcxx/src/filesystem/directory_iterator.cpp
@@ -6,6 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include <__assert>
 #include <__config>
 #include <errno.h>
 #include <filesystem>

diff  --git a/libcxx/src/filesystem/filesystem_common.h b/libcxx/src/filesystem/filesystem_common.h
index 94153567b8110..c98d14416c8b6 100644
--- a/libcxx/src/filesystem/filesystem_common.h
+++ b/libcxx/src/filesystem/filesystem_common.h
@@ -9,6 +9,7 @@
 #ifndef FILESYSTEM_COMMON_H
 #define FILESYSTEM_COMMON_H
 
+#include <__assert>
 #include <__config>
 #include <array>
 #include <chrono>

diff  --git a/libcxx/src/filesystem/operations.cpp b/libcxx/src/filesystem/operations.cpp
index 57e25397a28c8..0e2ebdfe5aa71 100644
--- a/libcxx/src/filesystem/operations.cpp
+++ b/libcxx/src/filesystem/operations.cpp
@@ -6,6 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include <__assert>
 #include <__utility/unreachable.h>
 #include <array>
 #include <climits>

diff  --git a/libcxx/src/filesystem/posix_compat.h b/libcxx/src/filesystem/posix_compat.h
index 6cd6650081614..36116ec5a3952 100644
--- a/libcxx/src/filesystem/posix_compat.h
+++ b/libcxx/src/filesystem/posix_compat.h
@@ -23,6 +23,7 @@
 #ifndef POSIX_COMPAT_H
 #define POSIX_COMPAT_H
 
+#include <__assert>
 #include <filesystem>
 
 #include "filesystem_common.h"

diff  --git a/libcxx/src/include/ryu/common.h b/libcxx/src/include/ryu/common.h
index 52913120f107b..c24115c23364e 100644
--- a/libcxx/src/include/ryu/common.h
+++ b/libcxx/src/include/ryu/common.h
@@ -42,6 +42,7 @@
 // Avoid formatting to keep the changes with the original code minimal.
 // clang-format off
 
+#include <__assert>
 #include "__config"
 
 _LIBCPP_BEGIN_NAMESPACE_STD

diff  --git a/libcxx/src/include/ryu/d2s_intrinsics.h b/libcxx/src/include/ryu/d2s_intrinsics.h
index 093d8580774b5..762763f9b92cf 100644
--- a/libcxx/src/include/ryu/d2s_intrinsics.h
+++ b/libcxx/src/include/ryu/d2s_intrinsics.h
@@ -42,6 +42,7 @@
 // Avoid formatting to keep the changes with the original code minimal.
 // clang-format off
 
+#include <__assert>
 #include <__config>
 
 #include "include/ryu/ryu.h"

diff  --git a/libcxx/src/include/to_chars_floating_point.h b/libcxx/src/include/to_chars_floating_point.h
index 3f8d3613d8bdc..0bb45d0b97910 100644
--- a/libcxx/src/include/to_chars_floating_point.h
+++ b/libcxx/src/include/to_chars_floating_point.h
@@ -21,6 +21,7 @@
 #include <__algorithm/find_if.h>
 #include <__algorithm/lower_bound.h>
 #include <__algorithm/min.h>
+#include <__assert>
 #include <__config>
 #include <__iterator/access.h>
 #include <__iterator/size.h>

diff  --git a/libcxx/src/mutex.cpp b/libcxx/src/mutex.cpp
index 9e780aaff64e8..01b7420fa3b8a 100644
--- a/libcxx/src/mutex.cpp
+++ b/libcxx/src/mutex.cpp
@@ -6,6 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include <__assert>
 #include <limits>
 #include <mutex>
 #include <system_error>

diff  --git a/libcxx/src/ryu/d2fixed.cpp b/libcxx/src/ryu/d2fixed.cpp
index bb6d621803616..c1a1f6cf9e05d 100644
--- a/libcxx/src/ryu/d2fixed.cpp
+++ b/libcxx/src/ryu/d2fixed.cpp
@@ -39,6 +39,7 @@
 // Avoid formatting to keep the changes with the original code minimal.
 // clang-format off
 
+#include <__assert>
 #include <__config>
 #include <charconv>
 #include <cstring>

diff  --git a/libcxx/src/ryu/d2s.cpp b/libcxx/src/ryu/d2s.cpp
index e22bfa4a12e65..245c2eb5908d4 100644
--- a/libcxx/src/ryu/d2s.cpp
+++ b/libcxx/src/ryu/d2s.cpp
@@ -39,6 +39,7 @@
 // Avoid formatting to keep the changes with the original code minimal.
 // clang-format off
 
+#include <__assert>
 #include <__config>
 #include <charconv>
 

diff  --git a/libcxx/src/ryu/f2s.cpp b/libcxx/src/ryu/f2s.cpp
index e7d46d21cdbd8..3bcfe462c8f75 100644
--- a/libcxx/src/ryu/f2s.cpp
+++ b/libcxx/src/ryu/f2s.cpp
@@ -39,6 +39,7 @@
 // Avoid formatting to keep the changes with the original code minimal.
 // clang-format off
 
+#include <__assert>
 #include <__config>
 #include <charconv>
 

diff  --git a/libcxx/src/string.cpp b/libcxx/src/string.cpp
index db7d7d5598dd8..9d1de0cf6ca1a 100644
--- a/libcxx/src/string.cpp
+++ b/libcxx/src/string.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include <__debug>
+#include <__assert>
 #include <cerrno>
 #include <charconv>
 #include <cstdlib>

diff  --git a/libcxx/src/strstream.cpp b/libcxx/src/strstream.cpp
index c3a7eb9a8c66d..87c235a97a29c 100644
--- a/libcxx/src/strstream.cpp
+++ b/libcxx/src/strstream.cpp
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include <__assert>
 #include <__utility/unreachable.h>
-#include <__debug>
 #include <algorithm>
 #include <climits>
 #include <cstdlib>

diff  --git a/libcxx/src/support/ibm/xlocale_zos.cpp b/libcxx/src/support/ibm/xlocale_zos.cpp
index 90c1ba95a3132..a3f9558a0611f 100644
--- a/libcxx/src/support/ibm/xlocale_zos.cpp
+++ b/libcxx/src/support/ibm/xlocale_zos.cpp
@@ -6,6 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include <__assert>
 #include <__support/ibm/xlocale.h>
 #include <sstream>
 #include <vector>

diff  --git a/libcxx/src/system_error.cpp b/libcxx/src/system_error.cpp
index 1c4570291cb36..66db76c37b5f6 100644
--- a/libcxx/src/system_error.cpp
+++ b/libcxx/src/system_error.cpp
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include <__assert>
 #include <__config>
-#include <__debug>
 #include <cerrno>
 #include <cstdio>
 #include <cstdlib>

diff  --git a/libcxx/test/libcxx/debug/debug_abort.pass.cpp b/libcxx/test/libcxx/debug/debug_abort.pass.cpp
index a56c304d014f4..a74fdb01adf30 100644
--- a/libcxx/test/libcxx/debug/debug_abort.pass.cpp
+++ b/libcxx/test/libcxx/debug/debug_abort.pass.cpp
@@ -11,9 +11,9 @@
 
 // Test that the default debug handler aborts the program.
 
+#include <__assert>
 #include <csignal>
 #include <cstdlib>
-#include <__debug>
 
 #include "test_macros.h"
 

diff  --git a/libcxx/utils/generate_private_header_tests.py b/libcxx/utils/generate_private_header_tests.py
index e6eecd68ae506..810657ea4f418 100755
--- a/libcxx/utils/generate_private_header_tests.py
+++ b/libcxx/utils/generate_private_header_tests.py
@@ -52,7 +52,7 @@ def relative_path(path):
 def is_still_public(path):
     rp = relative_path(path)
     return not rp.startswith('__support') and rp not in [
-        "__bsd_locale_defaults.h", "__bsd_locale_fallbacks.h", "__config",
+        "__assert", "__bsd_locale_defaults.h", "__bsd_locale_fallbacks.h", "__config",
         "__config_site.in", "__debug", "__hash_table",
         "__libcpp_version", "__threading_support", "__tree", "__undef_macros"
     ]


        


More information about the libcxx-commits mailing list