[libcxx-commits] [libcxx] [libc++] Put [[gnu::nodebug]] on all internal aliases (PR #118710)
via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Dec 9 07:56:22 PST 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libcxx
Author: Nikolas Klauser (philnik777)
<details>
<summary>Changes</summary>
---
Patch is 200.99 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/118710.diff
155 Files Affected:
- (modified) libcxx/include/__algorithm/comp_ref_type.h (+2-2)
- (modified) libcxx/include/__algorithm/copy.h (+1-1)
- (modified) libcxx/include/__algorithm/iterator_operations.h (+9-9)
- (modified) libcxx/include/__algorithm/move.h (+1-1)
- (modified) libcxx/include/__algorithm/ranges_iterator_concept.h (+1-1)
- (modified) libcxx/include/__algorithm/ranges_unique_copy.h (+1-1)
- (modified) libcxx/include/__algorithm/simd_utils.h (+4-3)
- (modified) libcxx/include/__algorithm/sort.h (+2-2)
- (modified) libcxx/include/__algorithm/three_way_comp_ref_type.h (+2-2)
- (modified) libcxx/include/__algorithm/unwrap_iter.h (+1-1)
- (modified) libcxx/include/__atomic/aliases.h (+5-5)
- (modified) libcxx/include/__atomic/atomic.h (+10-10)
- (modified) libcxx/include/__atomic/atomic_ref.h (+5-5)
- (modified) libcxx/include/__atomic/atomic_sync.h (+1-1)
- (modified) libcxx/include/__atomic/contention_t.h (+3-3)
- (modified) libcxx/include/__atomic/memory_order.h (+1-1)
- (modified) libcxx/include/__bit_reference (+12-12)
- (modified) libcxx/include/__chrono/formatter.h (+23-23)
- (modified) libcxx/include/__chrono/hh_mm_ss.h (+1-1)
- (modified) libcxx/include/__chrono/parser_std_format_spec.h (+1-1)
- (modified) libcxx/include/__compare/ordering.h (+2-2)
- (modified) libcxx/include/__compare/synth_three_way.h (+2-1)
- (modified) libcxx/include/__exception/exception_ptr.h (+1-1)
- (modified) libcxx/include/__expected/expected.h (+5-5)
- (modified) libcxx/include/__expected/unexpected.h (+6-6)
- (modified) libcxx/include/__filesystem/path.h (+17-17)
- (modified) libcxx/include/__flat_map/flat_map.h (+4-3)
- (modified) libcxx/include/__format/buffer.h (+9-8)
- (modified) libcxx/include/__format/concepts.h (+1-1)
- (modified) libcxx/include/__format/container_adaptor.h (+2-2)
- (modified) libcxx/include/__format/format_arg.h (+1-1)
- (modified) libcxx/include/__format/format_arg_store.h (+1-1)
- (modified) libcxx/include/__format/format_functions.h (+1-1)
- (modified) libcxx/include/__format/formatter_floating_point.h (+1-1)
- (modified) libcxx/include/__format/formatter_string.h (+5-5)
- (modified) libcxx/include/__format/range_default_formatter.h (+7-6)
- (modified) libcxx/include/__format/unicode.h (+5-5)
- (modified) libcxx/include/__functional/binary_function.h (+2-2)
- (modified) libcxx/include/__functional/bind.h (+1-1)
- (modified) libcxx/include/__functional/boyer_moore_searcher.h (+2-2)
- (modified) libcxx/include/__functional/function.h (+2-2)
- (modified) libcxx/include/__functional/perfect_forward.h (+1-1)
- (modified) libcxx/include/__functional/unary_function.h (+1-1)
- (modified) libcxx/include/__hash_table (+2-2)
- (modified) libcxx/include/__iterator/aliasing_iterator.h (+3-3)
- (modified) libcxx/include/__iterator/concepts.h (+4-4)
- (modified) libcxx/include/__iterator/insert_iterator.h (+2-2)
- (modified) libcxx/include/__iterator/iterator_traits.h (+29-23)
- (modified) libcxx/include/__iterator/projected.h (+6-6)
- (modified) libcxx/include/__iterator/ranges_iterator_traits.h (+3-3)
- (modified) libcxx/include/__iterator/reverse_iterator.h (+2-2)
- (modified) libcxx/include/__iterator/segmented_iterator.h (+1-1)
- (modified) libcxx/include/__locale (+1-1)
- (modified) libcxx/include/__locale_dir/locale_base_api.h (+1-1)
- (modified) libcxx/include/__mdspan/extents.h (+7-6)
- (modified) libcxx/include/__memory/allocation_guard.h (+2-2)
- (modified) libcxx/include/__memory/allocator_traits.h (+19-14)
- (modified) libcxx/include/__memory/pointer_traits.h (+4-4)
- (modified) libcxx/include/__memory/shared_ptr.h (+5-4)
- (modified) libcxx/include/__memory/unique_ptr.h (+5-5)
- (modified) libcxx/include/__memory/unique_temporary_buffer.h (+1-1)
- (modified) libcxx/include/__node_handle (+2-2)
- (modified) libcxx/include/__pstl/backend_fwd.h (+6-3)
- (modified) libcxx/include/__pstl/dispatch.h (+2-1)
- (modified) libcxx/include/__ranges/chunk_by_view.h (+1-1)
- (modified) libcxx/include/__ranges/drop_view.h (+3-3)
- (modified) libcxx/include/__ranges/drop_while_view.h (+2-2)
- (modified) libcxx/include/__ranges/elements_view.h (+2-2)
- (modified) libcxx/include/__ranges/filter_view.h (+3-3)
- (modified) libcxx/include/__ranges/iota_view.h (+1-1)
- (modified) libcxx/include/__ranges/join_view.h (+20-17)
- (modified) libcxx/include/__ranges/lazy_split_view.h (+6-5)
- (modified) libcxx/include/__ranges/repeat_view.h (+3-2)
- (modified) libcxx/include/__ranges/reverse_view.h (+2-1)
- (modified) libcxx/include/__ranges/split_view.h (+1-1)
- (modified) libcxx/include/__ranges/subrange.h (+1-1)
- (modified) libcxx/include/__ranges/take_view.h (+3-3)
- (modified) libcxx/include/__ranges/take_while_view.h (+1-1)
- (modified) libcxx/include/__ranges/transform_view.h (+5-5)
- (modified) libcxx/include/__split_buffer (+13-13)
- (modified) libcxx/include/__stop_token/stop_state.h (+4-4)
- (modified) libcxx/include/__thread/support/pthread.h (+1-1)
- (modified) libcxx/include/__tuple/make_tuple_types.h (+6-5)
- (modified) libcxx/include/__tuple/sfinae_helpers.h (+1-1)
- (modified) libcxx/include/__tuple/tuple_size.h (+1-1)
- (modified) libcxx/include/__type_traits/add_lvalue_reference.h (+1-1)
- (modified) libcxx/include/__type_traits/add_pointer.h (+1-1)
- (modified) libcxx/include/__type_traits/add_rvalue_reference.h (+1-1)
- (modified) libcxx/include/__type_traits/common_reference.h (+10-10)
- (modified) libcxx/include/__type_traits/common_type.h (+1-1)
- (modified) libcxx/include/__type_traits/conjunction.h (+1-1)
- (modified) libcxx/include/__type_traits/copy_cv.h (+5-5)
- (modified) libcxx/include/__type_traits/copy_cvref.h (+1-1)
- (modified) libcxx/include/__type_traits/detected_or.h (+1-1)
- (modified) libcxx/include/__type_traits/disjunction.h (+1-1)
- (modified) libcxx/include/__type_traits/invoke.h (+11-10)
- (modified) libcxx/include/__type_traits/is_always_bitcastable.h (+2-2)
- (modified) libcxx/include/__type_traits/is_char_like_type.h (+1-1)
- (modified) libcxx/include/__type_traits/is_equality_comparable.h (+1-1)
- (modified) libcxx/include/__type_traits/is_execution_policy.h (+1-1)
- (modified) libcxx/include/__type_traits/is_primary_template.h (+3-2)
- (modified) libcxx/include/__type_traits/is_same.h (+2-2)
- (modified) libcxx/include/__type_traits/is_swappable.h (+3-2)
- (modified) libcxx/include/__type_traits/make_32_64_or_128_bit.h (+1-1)
- (modified) libcxx/include/__type_traits/make_const_lvalue_ref.h (+1-1)
- (modified) libcxx/include/__type_traits/make_signed.h (+1-1)
- (modified) libcxx/include/__type_traits/make_unsigned.h (+3-2)
- (modified) libcxx/include/__type_traits/maybe_const.h (+1-1)
- (modified) libcxx/include/__type_traits/remove_all_extents.h (+1-1)
- (modified) libcxx/include/__type_traits/remove_const.h (+1-1)
- (modified) libcxx/include/__type_traits/remove_const_ref.h (+1-1)
- (modified) libcxx/include/__type_traits/remove_cv.h (+2-2)
- (modified) libcxx/include/__type_traits/remove_cvref.h (+1-1)
- (modified) libcxx/include/__type_traits/remove_extent.h (+1-1)
- (modified) libcxx/include/__type_traits/remove_pointer.h (+2-2)
- (modified) libcxx/include/__type_traits/remove_reference.h (+1-1)
- (modified) libcxx/include/__type_traits/remove_volatile.h (+1-1)
- (modified) libcxx/include/__type_traits/void_t.h (+1-1)
- (modified) libcxx/include/__utility/exception_guard.h (+2-2)
- (modified) libcxx/include/__utility/forward_like.h (+6-5)
- (modified) libcxx/include/__utility/in_place.h (+2-2)
- (modified) libcxx/include/__utility/integer_sequence.h (+4-4)
- (modified) libcxx/include/__utility/move.h (+1-1)
- (modified) libcxx/include/__utility/pair.h (+1-1)
- (modified) libcxx/include/__utility/swap.h (+3-2)
- (modified) libcxx/include/__vector/vector.h (+1-1)
- (modified) libcxx/include/any (+7-5)
- (modified) libcxx/include/array (+15-14)
- (modified) libcxx/include/barrier (+1-1)
- (modified) libcxx/include/ccomplex (+5-4)
- (modified) libcxx/include/ciso646 (+3-2)
- (modified) libcxx/include/complex (+1-1)
- (modified) libcxx/include/cstdalign (+4-4)
- (modified) libcxx/include/cstdbool (+4-4)
- (modified) libcxx/include/ctgmath (+6-4)
- (modified) libcxx/include/deque (+16-14)
- (modified) libcxx/include/experimental/__simd/scalar.h (+3-3)
- (modified) libcxx/include/experimental/__simd/simd.h (+2-2)
- (modified) libcxx/include/experimental/__simd/simd_mask.h (+2-2)
- (modified) libcxx/include/experimental/__simd/vec_ext.h (+3-3)
- (modified) libcxx/include/forward_list (+2-1)
- (modified) libcxx/include/ios (+2-2)
- (modified) libcxx/include/optional (+14-13)
- (modified) libcxx/include/ratio (+1-1)
- (modified) libcxx/include/regex (+2-1)
- (modified) libcxx/include/source_location (+1-1)
- (modified) libcxx/include/string (+3-3)
- (modified) libcxx/include/tuple (+2-1)
- (modified) libcxx/include/variant (+17-17)
- (modified) libcxx/test/tools/clang_tidy_checks/CMakeLists.txt (+1)
- (modified) libcxx/test/tools/clang_tidy_checks/libcpp_module.cpp (+2)
- (added) libcxx/test/tools/clang_tidy_checks/nodebug_on_internal_aliases.cpp (+35)
- (added) libcxx/test/tools/clang_tidy_checks/nodebug_on_internal_aliases.hpp (+18)
- (modified) libcxx/test/tools/clang_tidy_checks/uglify_attributes.cpp (+5-16)
- (added) libcxx/test/tools/clang_tidy_checks/utilities.hpp (+23)
``````````diff
diff --git a/libcxx/include/__algorithm/comp_ref_type.h b/libcxx/include/__algorithm/comp_ref_type.h
index c367fbb91ac282..d98aef40a79ddb 100644
--- a/libcxx/include/__algorithm/comp_ref_type.h
+++ b/libcxx/include/__algorithm/comp_ref_type.h
@@ -56,10 +56,10 @@ struct __debug_less {
// Pass the comparator by lvalue reference. Or in the debug mode, using a debugging wrapper that stores a reference.
#if _LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_DEBUG
template <class _Comp>
-using __comp_ref_type = __debug_less<_Comp>;
+using __comp_ref_type [[__gnu__::__nodebug__]] = __debug_less<_Comp>;
#else
template <class _Comp>
-using __comp_ref_type = _Comp&;
+using __comp_ref_type [[__gnu__::__nodebug__]] = _Comp&;
#endif
_LIBCPP_END_NAMESPACE_STD
diff --git a/libcxx/include/__algorithm/copy.h b/libcxx/include/__algorithm/copy.h
index 4f30b2050abbaf..210ae3086ab7a5 100644
--- a/libcxx/include/__algorithm/copy.h
+++ b/libcxx/include/__algorithm/copy.h
@@ -47,7 +47,7 @@ struct __copy_impl {
template <class _InIter, class _OutIter>
struct _CopySegment {
- using _Traits = __segmented_iterator_traits<_InIter>;
+ using _Traits [[__gnu__::__nodebug__]] = __segmented_iterator_traits<_InIter>;
_OutIter& __result_;
diff --git a/libcxx/include/__algorithm/iterator_operations.h b/libcxx/include/__algorithm/iterator_operations.h
index 6cdb0aec9b2db8..4ba9072ddf63bd 100644
--- a/libcxx/include/__algorithm/iterator_operations.h
+++ b/libcxx/include/__algorithm/iterator_operations.h
@@ -48,13 +48,13 @@ struct _RangeAlgPolicy {};
template <>
struct _IterOps<_RangeAlgPolicy> {
template <class _Iter>
- using __value_type = iter_value_t<_Iter>;
+ using __value_type [[__gnu__::__nodebug__]] = iter_value_t<_Iter>;
template <class _Iter>
- using __iterator_category = ranges::__iterator_concept<_Iter>;
+ using __iterator_category [[__gnu__::__nodebug__]] = ranges::__iterator_concept<_Iter>;
template <class _Iter>
- using __difference_type = iter_difference_t<_Iter>;
+ using __difference_type [[__gnu__::__nodebug__]] = iter_difference_t<_Iter>;
static constexpr auto advance = ranges::advance;
static constexpr auto distance = ranges::distance;
@@ -72,13 +72,13 @@ struct _ClassicAlgPolicy {};
template <>
struct _IterOps<_ClassicAlgPolicy> {
template <class _Iter>
- using __value_type = typename iterator_traits<_Iter>::value_type;
+ using __value_type [[__gnu__::__nodebug__]] = typename iterator_traits<_Iter>::value_type;
template <class _Iter>
- using __iterator_category = typename iterator_traits<_Iter>::iterator_category;
+ using __iterator_category [[__gnu__::__nodebug__]] = typename iterator_traits<_Iter>::iterator_category;
template <class _Iter>
- using __difference_type = typename iterator_traits<_Iter>::difference_type;
+ using __difference_type [[__gnu__::__nodebug__]] = typename iterator_traits<_Iter>::difference_type;
// advance
template <class _Iter, class _Distance>
@@ -94,10 +94,10 @@ struct _IterOps<_ClassicAlgPolicy> {
}
template <class _Iter>
- using __deref_t = decltype(*std::declval<_Iter&>());
+ using __deref_t [[__gnu__::__nodebug__]] = decltype(*std::declval<_Iter&>());
template <class _Iter>
- using __move_t = decltype(std::move(*std::declval<_Iter&>()));
+ using __move_t [[__gnu__::__nodebug__]] = decltype(std::move(*std::declval<_Iter&>()));
template <class _Iter>
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static void __validate_iter_reference() {
@@ -217,7 +217,7 @@ struct _IterOps<_ClassicAlgPolicy> {
};
template <class _AlgPolicy, class _Iter>
-using __policy_iter_diff_t = typename _IterOps<_AlgPolicy>::template __difference_type<_Iter>;
+using __policy_iter_diff_t [[__gnu__::__nodebug__]] = typename _IterOps<_AlgPolicy>::template __difference_type<_Iter>;
_LIBCPP_END_NAMESPACE_STD
diff --git a/libcxx/include/__algorithm/move.h b/libcxx/include/__algorithm/move.h
index 005099dcac06e3..48c3b9061f06f2 100644
--- a/libcxx/include/__algorithm/move.h
+++ b/libcxx/include/__algorithm/move.h
@@ -50,7 +50,7 @@ struct __move_impl {
template <class _InIter, class _OutIter>
struct _MoveSegment {
- using _Traits = __segmented_iterator_traits<_InIter>;
+ using _Traits [[__gnu__::__nodebug__]] = __segmented_iterator_traits<_InIter>;
_OutIter& __result_;
diff --git a/libcxx/include/__algorithm/ranges_iterator_concept.h b/libcxx/include/__algorithm/ranges_iterator_concept.h
index 2af891d3af005a..4846ef4139d0f5 100644
--- a/libcxx/include/__algorithm/ranges_iterator_concept.h
+++ b/libcxx/include/__algorithm/ranges_iterator_concept.h
@@ -44,7 +44,7 @@ consteval auto __get_iterator_concept() {
}
template <class _Iter>
-using __iterator_concept = decltype(__get_iterator_concept<_Iter>());
+using __iterator_concept [[__gnu__::__nodebug__]] = decltype(__get_iterator_concept<_Iter>());
} // namespace ranges
_LIBCPP_END_NAMESPACE_STD
diff --git a/libcxx/include/__algorithm/ranges_unique_copy.h b/libcxx/include/__algorithm/ranges_unique_copy.h
index 3b4a64e94ca1f5..2b0e7358f47a51 100644
--- a/libcxx/include/__algorithm/ranges_unique_copy.h
+++ b/libcxx/include/__algorithm/ranges_unique_copy.h
@@ -60,7 +60,7 @@ struct __unique_copy {
}
template <class _InIter, class _OutIter>
- using __algo_tag_t = decltype(__get_algo_tag<_InIter, _OutIter>());
+ using __algo_tag_t [[__gnu__::__nodebug__]] = decltype(__get_algo_tag<_InIter, _OutIter>());
template <input_iterator _InIter,
sentinel_for<_InIter> _Sent,
diff --git a/libcxx/include/__algorithm/simd_utils.h b/libcxx/include/__algorithm/simd_utils.h
index 4e3e4f2b9404e3..ab359bb8c8fa97 100644
--- a/libcxx/include/__algorithm/simd_utils.h
+++ b/libcxx/include/__algorithm/simd_utils.h
@@ -70,7 +70,7 @@ struct __get_as_integer_type_impl<8> {
};
template <class _Tp>
-using __get_as_integer_type_t = typename __get_as_integer_type_impl<sizeof(_Tp)>::type;
+using __get_as_integer_type_t [[__gnu__::__nodebug__]] = typename __get_as_integer_type_impl<sizeof(_Tp)>::type;
// This isn't specialized for 64 byte vectors on purpose. They have the potential to significantly reduce performance
// in mixed simd/non-simd workloads and don't provide any performance improvement for currently vectorized algorithms
@@ -90,7 +90,7 @@ inline constexpr size_t __native_vector_size = 1;
# endif
template <class _ArithmeticT, size_t _Np>
-using __simd_vector __attribute__((__ext_vector_type__(_Np))) = _ArithmeticT;
+using __simd_vector __attribute__((__ext_vector_type__(_Np))) [[__gnu__::__nodebug__]] = _ArithmeticT;
template <class _VecT>
inline constexpr size_t __simd_vector_size_v = []<bool _False = false>() -> size_t {
@@ -106,7 +106,8 @@ _LIBCPP_HIDE_FROM_ABI _Tp __simd_vector_underlying_type_impl(__simd_vector<_Tp,
}
template <class _VecT>
-using __simd_vector_underlying_type_t = decltype(std::__simd_vector_underlying_type_impl(_VecT{}));
+using __simd_vector_underlying_type_t [[__gnu__::__nodebug__]] =
+ decltype(std::__simd_vector_underlying_type_impl(_VecT{}));
// This isn't inlined without always_inline when loading chars.
template <class _VecT, class _Iter>
diff --git a/libcxx/include/__algorithm/sort.h b/libcxx/include/__algorithm/sort.h
index ed828b6d723147..9a5f64f9e69f69 100644
--- a/libcxx/include/__algorithm/sort.h
+++ b/libcxx/include/__algorithm/sort.h
@@ -890,10 +890,10 @@ __sort_dispatch(_RandomAccessIterator __first, _RandomAccessIterator __last, _Co
}
template <class _Type, class... _Options>
-using __is_any_of = _Or<is_same<_Type, _Options>...>;
+using __is_any_of [[__gnu__::__nodebug__]] = _Or<is_same<_Type, _Options>...>;
template <class _Type>
-using __sort_is_specialized_in_library = __is_any_of<
+using __sort_is_specialized_in_library [[__gnu__::__nodebug__]] = __is_any_of<
_Type,
char,
#if _LIBCPP_HAS_WIDE_CHARACTERS
diff --git a/libcxx/include/__algorithm/three_way_comp_ref_type.h b/libcxx/include/__algorithm/three_way_comp_ref_type.h
index 5702a1fee08262..a76392988503d6 100644
--- a/libcxx/include/__algorithm/three_way_comp_ref_type.h
+++ b/libcxx/include/__algorithm/three_way_comp_ref_type.h
@@ -61,10 +61,10 @@ struct __debug_three_way_comp {
// Pass the comparator by lvalue reference. Or in the debug mode, using a debugging wrapper that stores a reference.
# if _LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_DEBUG
template <class _Comp>
-using __three_way_comp_ref_type = __debug_three_way_comp<_Comp>;
+using __three_way_comp_ref_type [[__gnu__::__nodebug__]] = __debug_three_way_comp<_Comp>;
# else
template <class _Comp>
-using __three_way_comp_ref_type = _Comp&;
+using __three_way_comp_ref_type [[__gnu__::__nodebug__]] = _Comp&;
# endif
#endif // _LIBCPP_STD_VER >= 20
diff --git a/libcxx/include/__algorithm/unwrap_iter.h b/libcxx/include/__algorithm/unwrap_iter.h
index 8cc0d22d4fc211..57b5a22240bb71 100644
--- a/libcxx/include/__algorithm/unwrap_iter.h
+++ b/libcxx/include/__algorithm/unwrap_iter.h
@@ -46,7 +46,7 @@ struct __unwrap_iter_impl {
// It's a contiguous iterator, so we can use a raw pointer instead
template <class _Iter>
struct __unwrap_iter_impl<_Iter, true> {
- using _ToAddressT = decltype(std::__to_address(std::declval<_Iter>()));
+ using _ToAddressT [[__gnu__::__nodebug__]] = decltype(std::__to_address(std::declval<_Iter>()));
static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Iter __rewrap(_Iter __orig_iter, _ToAddressT __unwrapped_iter) {
return __orig_iter + (__unwrapped_iter - std::__to_address(__orig_iter));
diff --git a/libcxx/include/__atomic/aliases.h b/libcxx/include/__atomic/aliases.h
index 37d11dd0aabf36..a95de035cc33ee 100644
--- a/libcxx/include/__atomic/aliases.h
+++ b/libcxx/include/__atomic/aliases.h
@@ -84,19 +84,19 @@ using atomic_uintmax_t = atomic<uintmax_t>;
// C++20 atomic_{signed,unsigned}_lock_free: prefer the contention type most highly, then the largest lock-free type
#if _LIBCPP_STD_VER >= 20
# if ATOMIC_LLONG_LOCK_FREE == 2
-using __largest_lock_free_type = long long;
+using __largest_lock_free_type [[__gnu__::__nodebug__]] = long long;
# elif ATOMIC_INT_LOCK_FREE == 2
-using __largest_lock_free_type = int;
+using __largest_lock_free_type [[__gnu__::__nodebug__]] = int;
# elif ATOMIC_SHORT_LOCK_FREE == 2
-using __largest_lock_free_type = short;
+using __largest_lock_free_type [[__gnu__::__nodebug__]] = short;
# elif ATOMIC_CHAR_LOCK_FREE == 2
-using __largest_lock_free_type = char;
+using __largest_lock_free_type [[__gnu__::__nodebug__]] = char;
# else
# define _LIBCPP_NO_LOCK_FREE_TYPES // There are no lockfree types (this can happen on unusual platforms)
# endif
# ifndef _LIBCPP_NO_LOCK_FREE_TYPES
-using __contention_t_or_largest =
+using __contention_t_or_largest [[__gnu__::__nodebug__]] =
__conditional_t<__libcpp_is_always_lock_free<__cxx_contention_t>::__value,
__cxx_contention_t,
__largest_lock_free_type>;
diff --git a/libcxx/include/__atomic/atomic.h b/libcxx/include/__atomic/atomic.h
index d83719c8733d7e..79dc2277bf7a2e 100644
--- a/libcxx/include/__atomic/atomic.h
+++ b/libcxx/include/__atomic/atomic.h
@@ -143,7 +143,7 @@ struct __atomic_base // false
template <class _Tp>
struct __atomic_base<_Tp, true> : public __atomic_base<_Tp, false> {
- using __base = __atomic_base<_Tp, false>;
+ using __base [[__gnu__::__nodebug__]] = __atomic_base<_Tp, false>;
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __atomic_base() _NOEXCEPT = default;
@@ -228,9 +228,9 @@ struct __atomic_waitable_traits<__atomic_base<_Tp, _IsIntegral> > {
template <class _Tp>
struct atomic : public __atomic_base<_Tp> {
- using __base = __atomic_base<_Tp>;
- using value_type = _Tp;
- using difference_type = value_type;
+ using __base [[__gnu__::__nodebug__]] = __atomic_base<_Tp>;
+ using value_type = _Tp;
+ using difference_type = value_type;
#if _LIBCPP_STD_VER >= 20
_LIBCPP_HIDE_FROM_ABI atomic() = default;
@@ -257,9 +257,9 @@ struct atomic : public __atomic_base<_Tp> {
template <class _Tp>
struct atomic<_Tp*> : public __atomic_base<_Tp*> {
- using __base = __atomic_base<_Tp*>;
- using value_type = _Tp*;
- using difference_type = ptrdiff_t;
+ using __base [[__gnu__::__nodebug__]] = __atomic_base<_Tp*>;
+ using value_type = _Tp*;
+ using difference_type = ptrdiff_t;
_LIBCPP_HIDE_FROM_ABI atomic() _NOEXCEPT = default;
@@ -389,9 +389,9 @@ struct atomic<_Tp> : __atomic_base<_Tp> {
}
public:
- using __base = __atomic_base<_Tp>;
- using value_type = _Tp;
- using difference_type = value_type;
+ using __base [[__gnu__::__nodebug__]] = __atomic_base<_Tp>;
+ using value_type = _Tp;
+ using difference_type = value_type;
_LIBCPP_HIDE_FROM_ABI constexpr atomic() noexcept = default;
_LIBCPP_HIDE_FROM_ABI constexpr atomic(_Tp __d) noexcept : __base(__d) {}
diff --git a/libcxx/include/__atomic/atomic_ref.h b/libcxx/include/__atomic/atomic_ref.h
index eef15983b98331..2ff573f99aab21 100644
--- a/libcxx/include/__atomic/atomic_ref.h
+++ b/libcxx/include/__atomic/atomic_ref.h
@@ -221,7 +221,7 @@ struct __atomic_ref_base {
_LIBCPP_HIDE_FROM_ABI void notify_all() const noexcept { std::__atomic_notify_all(*this); }
protected:
- using _Aligned_Tp [[__gnu__::__aligned__(required_alignment)]] = _Tp;
+ using _Aligned_Tp [[__gnu__::__aligned__(required_alignment), __gnu__::__nodebug__]] = _Tp;
_Aligned_Tp* __ptr_;
_LIBCPP_HIDE_FROM_ABI __atomic_ref_base(_Tp& __obj) : __ptr_(std::addressof(__obj)) {}
@@ -241,7 +241,7 @@ template <class _Tp>
struct atomic_ref : public __atomic_ref_base<_Tp> {
static_assert(is_trivially_copyable_v<_Tp>, "std::atomic_ref<T> requires that 'T' be a trivially copyable type");
- using __base = __atomic_ref_base<_Tp>;
+ using __base [[__gnu__::__nodebug__]] = __atomic_ref_base<_Tp>;
_LIBCPP_HIDE_FROM_ABI explicit atomic_ref(_Tp& __obj) : __base(__obj) {
_LIBCPP_ASSERT_ARGUMENT_WITHIN_DOMAIN(
@@ -259,7 +259,7 @@ struct atomic_ref : public __atomic_ref_base<_Tp> {
template <class _Tp>
requires(std::integral<_Tp> && !std::same_as<bool, _Tp>)
struct atomic_ref<_Tp> : public __atomic_ref_base<_Tp> {
- using __base = __atomic_ref_base<_Tp>;
+ using __base [[__gnu__::__nodebug__]] = __atomic_ref_base<_Tp>;
using difference_type = __base::value_type;
@@ -305,7 +305,7 @@ struct atomic_ref<_Tp> : public __atomic_ref_base<_Tp> {
template <class _Tp>
requires std::floating_point<_Tp>
struct atomic_ref<_Tp> : public __atomic_ref_base<_Tp> {
- using __base = __atomic_ref_base<_Tp>;
+ using __base [[__gnu__::__nodebug__]] = __atomic_ref_base<_Tp>;
using difference_type = __base::value_type;
@@ -344,7 +344,7 @@ struct atomic_ref<_Tp> : public __atomic_ref_base<_Tp> {
template <class _Tp>
struct atomic_ref<_Tp*> : public __atomic_ref_base<_Tp*> {
- using __base = __atomic_ref_base<_Tp*>;
+ using __base [[__gnu__::__nodebug__]] = __atomic_ref_base<_Tp*>;
using difference_type = ptrdiff_t;
diff --git a/libcxx/include/__atomic/atomic_sync.h b/libcxx/include/__atomic/atomic_sync.h
index a699b60d131844..73dd3ba5c5a619 100644
--- a/libcxx/include/__atomic/atomic_sync.h
+++ b/libcxx/include/__atomic/atomic_sync.h
@@ -82,7 +82,7 @@ struct __atomic_wait_backoff_impl {
_Poll __poll_;
memory_order __order_;
- using __waitable_traits = __atomic_waitable_traits<__decay_t<_AtomicWaitable> >;
+ using __waitable_traits [[__gnu__::__nodebug__]] = __atomic_waitable_traits<__decay_t<_AtomicWaitable> >;
_LIBCPP_AVAILABILITY_SYNC
_LIBCPP_HIDE_FROM_ABI bool
diff --git a/libcxx/include/__atomic/contention_t.h b/libcxx/include/__atomic/contention_t.h
index 65890f338ce990..11ba5b9a9d64e2 100644
--- a/libcxx/include/__atomic/contention_t.h
+++ b/libcxx/include/__atomic/contention_t.h
@@ -20,12 +20,12 @@
_LIBCPP_BEGIN_NAMESPACE_STD
#if defined(__linux__) || (defined(_AIX) && !defined(__64BIT__))
-using __cxx_contention_t = int32_t;
+using __cxx_contention_t [[__gnu__::__nodebug__]] = int32_t;
#else
-using __cxx_contention_t = int64_t;
+using __cxx_contention_t [[__gnu__::__nodebug__]] = int64_t;
#endif // __linux__ || (_AIX && !__64BIT__)
-using __cxx_atomic_contention_t = __cxx_atomic_impl<__cxx_contention_t>;
+using __cxx_atomic_contention_t [[__gnu__::__nodebug__]] = __cxx_atomic_impl<__cxx_contention_t>;
_LIBCPP_END_NAMESPACE_STD
diff --git a/libcxx/include/__atomic/memory_order.h b/libcxx/include/__atomic/memory_order.h
index 294121d1c4e7f4..5d51e1b15b3a75 100644
--- a/libcxx/include/__atomic/memory_order.h
+++ b/libcxx/include/__atomic/memory_order.h
@@ -24,7 +24,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
// to pin the underlying type in C++20.
enum __legacy_memory_order { __mo_relaxed, __mo_consume, __mo_acquire, __mo_release, __mo_acq_rel, __mo_seq_cst };
-using __memory_order_underlying_t = underlying_type<__legacy_memory_order>::type;
+using __memory_order_underlying_t [[__gnu__::__nodebug__]] = underlying_type<__legacy_memory_order>::type;
#if _LIBCPP_STD_VER >= 20
diff --git a/libcxx/include/__bit_reference b/libcxx/include/__bit_reference
index 22637d43974123..10fce5cc689176 100644
--- a/libcxx/include/__bit_reference
+++ b/libcxx/include/__bit_reference
@@ -45,8 +45,8 @@ struct __has_storage_type {
template <class _Cp, bool = __has_storage_type<_Cp>::value>
class __bit_reference {
- using __storage_type = typename _Cp::__storage_type;
- using __storage_pointer = typename _Cp::__storage_pointer;
+ using __storage_type [[__gnu__::__nodebug__]] = typename _Cp::__storage_type;
+ using __storage_pointer [[__gnu__::__nodebug__]] = typename _Cp::__storage_pointer;
__storage_pointer __seg_;
__storage_type __mask_;
@@ -57,7 +57,7 @@ class __bit_reference {
friend class __bit_iterator<_Cp, false>;
public:
- using __container = typename _Cp::__self;
+ using __container [[__gnu__::__nodebug__]] = typename _Cp::__self;
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_reference(const __bit_reference&) = default;
@@ -137,8 +137,8 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(bool& __x,
template <class _Cp>
class __bit_const_reference {
- using __storage_type = typename _Cp::__storage_type;
- using __storage_pointer = typename _Cp::__const_storage_pointer;
+ using __storage_type [[__gnu__::__nodebug__]] = typename _Cp::__storage_type;
+ using __storage_pointer [[__gnu__::__nodebug__]] = typename _Cp::__const_storage_pointer;
__storage_pointer __seg_;
__storage_type __mask_;
@@ -147,7 +147,7 @@ class __bit_const_reference {
friend class __bit_iterator<_Cp, true>;
public:
- using __container = typename _Cp::__self;
+ using __container [[__gnu__::__nodebug__]] = typename _Cp::__self;
_LIBCPP_HIDE_FROM_ABI __bit_const_reference(const __bit_const_reference&) = default;
__bit_const_reference& operator=(const __bit_const_reference&) = delete;
@@ -589,10 +589,10 @@ inline _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cr, false> swap_ranges(
template <class _Cp>
struct __bit_array {
- using difference_type = typename _Cp::difference_type;
- using __storage_type = typename _Cp::__storage_type;
- using __storage_pointer = typename _Cp::__storage_pointer;
- using iterator = typename _Cp::iterator;
+ using difference_type [[__gnu__::__nodebug__]] = typename _Cp::difference_type;
+ using __storage_type [[__gnu__::__nodebug__]] = typename _Cp::__storage_type;
+ using __storage_pointer [[__gnu__::__nodebug__]] = typename _Cp::__storage_pointer;
+ using iterator [[__gnu__::__nodebug__]] = typename _Cp::iterator;
static const unsigned __bits_per_word = _Cp::__bits_per_word;
static const unsigned _Np = 4;
@@ -792,8 +792,8 @@ public:
using iterator_category = random_access_iterator_tag;
private:
- using __storage_type = typename _Cp::__storage_type;
- using __storage_pointer =
+ using __storage_type [[__gnu__::__nodebug__]] = typename _Cp::__storage_type;
+ using __storage_pointer [[__gnu__::__nodebug__]] =
__conditional_t<_IsConst, typename _Cp::__const_storage_pointer, typename _Cp::__storage_pointer>;
static const unsigned __bits_per_word = _Cp::__bits_per_word;
di...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/118710
More information about the libcxx-commits
mailing list