[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