From 82ced8e67ade2804c9c81c32c2674644c5ccd22f Mon Sep 17 00:00:00 2001 From: Arendelle Date: Fri, 12 Jun 2026 23:02:52 +0800 Subject: [PATCH] remove redundant __has_cpp_attribute guards for [[likely]]/[[unlikely]] --- .../allocation/nt_rtlheapalloc.h | 6 +----- .../allocation/win32_heapalloc.h | 4 +--- include/fast_io_core_impl/freestanding/bytes.h | 18 +++++++----------- .../fast_io_core_impl/integers/percentage.h | 4 +--- .../printimpl/print_freestanding_cxx20.h | 14 ++------------ .../printimpl/print_freestanding_cxx26.h | 14 ++------------ .../operations/readimpl/scatter.h | 12 ++---------- .../operations/readimpl/scatterbytes.h | 10 +--------- .../operations/writeimpl/basis.h | 8 +------- .../operations/writeimpl/scatter.h | 10 +--------- .../operations/writeimpl/scatterbytes.h | 10 +--------- include/fast_io_core_impl/simd_find.h | 6 +----- include/fast_io_driver/avformat/avio.h | 6 +----- include/fast_io_driver/python/pyobject.h | 4 +--- include/fast_io_dsal/impl/vector.h | 4 +--- include/fast_io_hosted/white_hole/white_hole.h | 4 +--- 16 files changed, 25 insertions(+), 109 deletions(-) diff --git a/include/fast_io_core_impl/allocation/nt_rtlheapalloc.h b/include/fast_io_core_impl/allocation/nt_rtlheapalloc.h index 05c242e48..13b769ffe 100644 --- a/include/fast_io_core_impl/allocation/nt_rtlheapalloc.h +++ b/include/fast_io_core_impl/allocation/nt_rtlheapalloc.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include "nt_preliminary_definition.h" @@ -19,9 +19,7 @@ inline void *nt_rtlallocate_heap_handle_common_impl(void *heaphandle, ::std::siz } auto p{::fast_io::win32::nt::RtlAllocateHeap(heaphandle, flag, n)}; if (p == nullptr) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { ::fast_io::fast_terminate(); } @@ -38,9 +36,7 @@ inline void *nt_rtlreallocate_heap_handle_common_impl(void *heaphandle, void *ad n = 1; } if (addr == nullptr) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { return ::fast_io::details::nt_rtlallocate_heap_handle_common_impl(heaphandle, n, flag); } diff --git a/include/fast_io_core_impl/allocation/win32_heapalloc.h b/include/fast_io_core_impl/allocation/win32_heapalloc.h index 303a818a1..dec2ddd09 100644 --- a/include/fast_io_core_impl/allocation/win32_heapalloc.h +++ b/include/fast_io_core_impl/allocation/win32_heapalloc.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once namespace fast_io { @@ -59,9 +59,7 @@ inline void *win32_heaprealloc_handle_common_impl(void *heaphandle, void *addr, n = 1; } if (addr == nullptr) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { return win32_heapalloc_handle_common_impl(heaphandle, n, flag); } diff --git a/include/fast_io_core_impl/freestanding/bytes.h b/include/fast_io_core_impl/freestanding/bytes.h index afa0cebcd..ec397dd5a 100644 --- a/include/fast_io_core_impl/freestanding/bytes.h +++ b/include/fast_io_core_impl/freestanding/bytes.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once namespace fast_io::details { @@ -84,12 +84,10 @@ inline constexpr ::std::byte *bytes_copy_n(::std::byte const *first, ::std::size else { if (n) -#if __has_cpp_attribute(likely) [[likely]] -#endif { #if FAST_IO_HAS_BUILTIN(__builtin_memmove) - __builtin_memmove(dest, first, n); + __builtin_memmove(dest, first, n); #else ::std::memmove(dest, first, n); #endif @@ -116,12 +114,10 @@ inline constexpr ::std::byte *nonoverlapped_bytes_copy_n(::std::byte const *firs else { if (n) -#if __has_cpp_attribute(likely) [[likely]] -#endif { #if FAST_IO_HAS_BUILTIN(__builtin_memcpy) - __builtin_memcpy(dest, first, n); + __builtin_memcpy(dest, first, n); #else ::std::memcpy(dest, first, n); #endif @@ -155,7 +151,7 @@ inline constexpr ::std::byte const *type_punning_from_bytes(::std::byte const *_ #endif { #if FAST_IO_HAS_BUILTIN(__builtin_memcpy) - __builtin_memcpy(__builtin_addressof(t), first, n); + __builtin_memcpy(__builtin_addressof(t), first, n); #else ::std::memcpy(__builtin_addressof(t), first, n); #endif @@ -180,7 +176,7 @@ inline constexpr ::std::byte *type_punning_to_bytes_n(T const &__restrict first, #endif { #if FAST_IO_HAS_BUILTIN(__builtin_memcpy) - __builtin_memcpy(dest, __builtin_addressof(first), n); + __builtin_memcpy(dest, __builtin_addressof(first), n); #else ::std::memcpy(dest, __builtin_addressof(first), n); #endif @@ -208,7 +204,7 @@ inline constexpr ::std::byte *bytes_clear_n(::std::byte *data, ::std::size_t siz else { #if FAST_IO_HAS_BUILTIN(__builtin_memset) - __builtin_memset(data, 0, size); + __builtin_memset(data, 0, size); #else ::std::memset(data, 0, size); #endif @@ -233,7 +229,7 @@ inline constexpr ::std::byte *bytes_fill_n(::std::byte *data, ::std::size_t size else { #if FAST_IO_HAS_BUILTIN(__builtin_memset) - __builtin_memset(data, static_cast(val), size); + __builtin_memset(data, static_cast(val), size); #else ::std::memset(data, static_cast(val), size); #endif diff --git a/include/fast_io_core_impl/integers/percentage.h b/include/fast_io_core_impl/integers/percentage.h index 5a26db32b..4a2d965cf 100644 --- a/include/fast_io_core_impl/integers/percentage.h +++ b/include/fast_io_core_impl/integers/percentage.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once namespace fast_io { @@ -270,9 +270,7 @@ inline constexpr chartype *prrsv_percentage_main_common_impl(chartype *iter, T n bool denominatoriseven{!(denominator & 1u)}; unsigned quotientmod100; if (numerator10000high == 0u) -#if __has_cpp_attribute(likely) [[likely]] -#endif { auto quotient{numerator10000low / denominator}; auto remainder{numerator10000low % denominator}; diff --git a/include/fast_io_core_impl/operations/printimpl/print_freestanding_cxx20.h b/include/fast_io_core_impl/operations/printimpl/print_freestanding_cxx20.h index 27eb12af9..c6bcdfdda 100644 --- a/include/fast_io_core_impl/operations/printimpl/print_freestanding_cxx20.h +++ b/include/fast_io_core_impl/operations/printimpl/print_freestanding_cxx20.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once namespace fast_io { @@ -435,9 +435,7 @@ inline constexpr void print_control_single(output outstm, T t) bool smaller{static_cast<::std::ptrdiff_t>(size) < diff}; ::fast_io::details::local_operator_new_array_ptr newptr; if (!smaller) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { newptr.ptr = toptr = ::fast_io::details::allocate_iobuf_space< char_type, @@ -456,9 +454,7 @@ inline constexpr void print_control_single(output outstm, T t) obuffer_set_curr(outstm, it); } else -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { ::fast_io::operations::decay::write_all_decay(outstm, toptr, it); } @@ -532,9 +528,7 @@ inline constexpr void print_control_single(output outstm, T t) auto bcurr{obuffer_curr(outstm)}; auto bed{obuffer_end(outstm)}; if (bed <= bcurr) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { if constexpr (minimum_buffer_output_stream_require_size_impl) { @@ -548,9 +542,7 @@ inline constexpr void print_control_single(output outstm, T t) bcurr = obuffer_curr(outstm); bed = obuffer_end(outstm); if (bed - bcurr < reserved_size_no_line) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { char_type buffer[reserved_size]; char_type *buffered{buffer + reserved_size_no_line}; @@ -588,9 +580,7 @@ inline constexpr void print_control_single(output outstm, T t) auto [resit, done] = st.print_context_define(t, bcurr, bed); obuffer_set_curr(outstm, resit); if (done) -#if __has_cpp_attribute(likely) [[likely]] -#endif { if constexpr (line) { @@ -1406,7 +1396,7 @@ template #endif inline constexpr decltype(auto) print_freestanding_decay_cold(outputstmtype optstm, Args... args) { -#if !__has_cpp_attribute(__gnu__::__cold__) && __has_cpp_attribute(unlikely) +#if !__has_cpp_attribute(__gnu__::__cold__) if (true) [[unlikely]] #endif return ::fast_io::operations::decay::print_freestanding_decay(optstm, args...); diff --git a/include/fast_io_core_impl/operations/printimpl/print_freestanding_cxx26.h b/include/fast_io_core_impl/operations/printimpl/print_freestanding_cxx26.h index e41db93f4..5371fed9e 100644 --- a/include/fast_io_core_impl/operations/printimpl/print_freestanding_cxx26.h +++ b/include/fast_io_core_impl/operations/printimpl/print_freestanding_cxx26.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #error "We do not recommend using this header file for the time being." @@ -408,9 +408,7 @@ inline constexpr void print_control_single(output outstm, T t) bool smaller{static_cast<::std::ptrdiff_t>(size) < diff}; ::fast_io::details::local_operator_new_array_ptr newptr; if (!smaller) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { newptr.ptr = toptr = ::fast_io::details::allocate_iobuf_space< char_type, @@ -429,9 +427,7 @@ inline constexpr void print_control_single(output outstm, T t) obuffer_set_curr(outstm, it); } else -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { ::fast_io::operations::decay::write_all_decay(outstm, toptr, it); } @@ -505,9 +501,7 @@ inline constexpr void print_control_single(output outstm, T t) auto bcurr{obuffer_curr(outstm)}; auto bed{obuffer_end(outstm)}; if (bed <= bcurr) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { if constexpr (minimum_buffer_output_stream_require_size_impl) { @@ -521,9 +515,7 @@ inline constexpr void print_control_single(output outstm, T t) bcurr = obuffer_curr(outstm); bed = obuffer_end(outstm); if (bed - bcurr < reserved_size_no_line) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { char_type buffer[reserved_size]; char_type *buffered{buffer + reserved_size_no_line}; @@ -561,9 +553,7 @@ inline constexpr void print_control_single(output outstm, T t) auto [resit, done] = st.print_context_define(t, bcurr, bed); obuffer_set_curr(outstm, resit); if (done) -#if __has_cpp_attribute(likely) [[likely]] -#endif { if constexpr (line) { @@ -1338,7 +1328,7 @@ template #endif inline constexpr decltype(auto) print_freestanding_decay_cold(outputstmtype optstm, Args... args) { -#if !__has_cpp_attribute(__gnu__::__cold__) && __has_cpp_attribute(unlikely) +#if !__has_cpp_attribute(__gnu__::__cold__) if (true) [[unlikely]] #endif return ::fast_io::operations::decay::print_freestanding_decay(optstm, args...); diff --git a/include/fast_io_core_impl/operations/readimpl/scatter.h b/include/fast_io_core_impl/operations/readimpl/scatter.h index 75fd434ea..1fdf8ac91 100644 --- a/include/fast_io_core_impl/operations/readimpl/scatter.h +++ b/include/fast_io_core_impl/operations/readimpl/scatter.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once namespace fast_io { @@ -11,7 +11,7 @@ inline constexpr ::std::byte *read_some_bytes_decay(instmtype insm, ::std::byte template inline constexpr ::std::byte *pread_some_bytes_decay(instmtype insm, ::std::byte *first, ::std::byte *last, - ::fast_io::intfpos_t); + ::fast_io::intfpos_t); } // namespace operations::decay @@ -160,9 +160,7 @@ scatter_read_some_impl(instmtype insm, basic_io_scatter_t(e - i))}; ret.position += static_cast<::std::size_t>(i - pscatters); @@ -311,9 +307,7 @@ inline constexpr void scatter_read_all_impl(instmtype insm, { auto [base, len] = *i; if (len < buffptrdiff) -#if __has_cpp_attribute(likely) [[likely]] -#endif { ::fast_io::details::non_overlapped_copy_n(curr, len, base); curr += len; @@ -326,9 +320,7 @@ inline constexpr void scatter_read_all_impl(instmtype insm, } ibuffer_set_curr(insm, curr); if (i != e) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { return ::fast_io::details::scatter_read_all_cold_impl(insm, i, static_cast<::std::size_t>(e - i)); } diff --git a/include/fast_io_core_impl/operations/readimpl/scatterbytes.h b/include/fast_io_core_impl/operations/readimpl/scatterbytes.h index 9fec274bd..e6d9ab9e0 100644 --- a/include/fast_io_core_impl/operations/readimpl/scatterbytes.h +++ b/include/fast_io_core_impl/operations/readimpl/scatterbytes.h @@ -1,4 +1,4 @@ -namespace fast_io +namespace fast_io { namespace details @@ -96,9 +96,7 @@ inline constexpr io_scatter_status_t scatter_read_some_bytes_impl(instmtype insm { auto [base, len] = *i; if (len < buffptrdiff) -#if __has_cpp_attribute(likely) [[likely]] -#endif { using char_type_ptr #if __has_cpp_attribute(__gnu__::__may_alias__) @@ -116,9 +114,7 @@ inline constexpr io_scatter_status_t scatter_read_some_bytes_impl(instmtype insm } ibuffer_set_curr(insm, curr); if (i != e) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { auto ret{::fast_io::details::scatter_read_some_bytes_cold_impl(insm, i, static_cast<::std::size_t>(e - i))}; ret.position += static_cast<::std::size_t>(i - pscatters); @@ -251,9 +247,7 @@ inline constexpr void scatter_read_all_bytes_impl(instmtype insm, io_scatter_t c { auto [base, len] = *i; if (len < buffptrdiff) -#if __has_cpp_attribute(likely) [[likely]] -#endif { using char_type_ptr #if __has_cpp_attribute(__gnu__::__may_alias__) @@ -271,9 +265,7 @@ inline constexpr void scatter_read_all_bytes_impl(instmtype insm, io_scatter_t c } ibuffer_set_curr(insm, curr); if (i != e) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { return ::fast_io::details::scatter_read_all_bytes_cold_impl(insm, i, static_cast<::std::size_t>(e - i)); } diff --git a/include/fast_io_core_impl/operations/writeimpl/basis.h b/include/fast_io_core_impl/operations/writeimpl/basis.h index 38b0645e4..1b066fb06 100644 --- a/include/fast_io_core_impl/operations/writeimpl/basis.h +++ b/include/fast_io_core_impl/operations/writeimpl/basis.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once namespace fast_io { @@ -509,9 +509,7 @@ inline constexpr void write_all_impl(outstmtype outsm, typename outstmtype::outp ::std::ptrdiff_t bfddiff{ed - curr}; ::std::ptrdiff_t itdiff{last - first}; if (itdiff < bfddiff) -#if __has_cpp_attribute(likely) [[likely]] -#endif { obuffer_set_curr(outsm, non_overlapped_copy_n(first, static_cast<::std::size_t>(itdiff), curr)); return; @@ -540,9 +538,7 @@ inline constexpr ::std::byte const *write_some_bytes_impl(outstmtype outsm, ::st ::std::ptrdiff_t bfddiff{ed - curr}; ::std::ptrdiff_t itdiff{last - first}; if (itdiff < bfddiff) -#if __has_cpp_attribute(likely) [[likely]] -#endif { using char_type_const_ptr #if __has_cpp_attribute(__gnu__::__may_alias__) @@ -642,9 +638,7 @@ char_put_impl(outstm outsm, typename decltype(::fast_io::operations::output_stre condition = curr != ed; } if (condition) -#if __has_cpp_attribute(likely) [[likely]] -#endif { *curr = ch; diff --git a/include/fast_io_core_impl/operations/writeimpl/scatter.h b/include/fast_io_core_impl/operations/writeimpl/scatter.h index 1c8406f1a..d8220a105 100644 --- a/include/fast_io_core_impl/operations/writeimpl/scatter.h +++ b/include/fast_io_core_impl/operations/writeimpl/scatter.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once namespace fast_io { @@ -167,9 +167,7 @@ scatter_write_some_impl(outstmtype outsm, basic_io_scatter_t(e - i))}; ret.position += static_cast<::std::size_t>(i - pscatters); @@ -340,9 +336,7 @@ inline constexpr void scatter_write_all_impl(outstmtype outsm, { auto [base, len] = *i; if (len < buffptrdiff) -#if __has_cpp_attribute(likely) [[likely]] -#endif { curr = ::fast_io::details::non_overlapped_copy_n(base, len, curr); buffptrdiff -= len; @@ -354,9 +348,7 @@ inline constexpr void scatter_write_all_impl(outstmtype outsm, } obuffer_set_curr(outsm, curr); if (i != e) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { return ::fast_io::details::scatter_write_all_cold_impl(outsm, i, static_cast<::std::size_t>(e - i)); } diff --git a/include/fast_io_core_impl/operations/writeimpl/scatterbytes.h b/include/fast_io_core_impl/operations/writeimpl/scatterbytes.h index efc5f6d73..aae0483ab 100644 --- a/include/fast_io_core_impl/operations/writeimpl/scatterbytes.h +++ b/include/fast_io_core_impl/operations/writeimpl/scatterbytes.h @@ -1,4 +1,4 @@ -namespace fast_io +namespace fast_io { namespace details @@ -120,9 +120,7 @@ inline constexpr io_scatter_status_t scatter_write_some_bytes_impl(outstmtype ou { auto [base, len] = *i; if (len < buffptrdiff) -#if __has_cpp_attribute(likely) [[likely]] -#endif { using char_type_const_ptr #if __has_cpp_attribute(__gnu__::__may_alias__) @@ -140,9 +138,7 @@ inline constexpr io_scatter_status_t scatter_write_some_bytes_impl(outstmtype ou } obuffer_set_curr(outsm, curr); if (i != e) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { auto ret{ ::fast_io::details::scatter_write_some_bytes_cold_impl(outsm, i, static_cast<::std::size_t>(e - i))}; @@ -287,9 +283,7 @@ inline constexpr void scatter_write_all_bytes_impl(outstmtype outsm, io_scatter_ { auto [base, len] = *i; if (len < buffptrdiff) -#if __has_cpp_attribute(likely) [[likely]] -#endif { using char_type_const_ptr #if __has_cpp_attribute(__gnu__::__may_alias__) @@ -307,9 +301,7 @@ inline constexpr void scatter_write_all_bytes_impl(outstmtype outsm, io_scatter_ } obuffer_set_curr(outsm, curr); if (i != e) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { return ::fast_io::details::scatter_write_all_bytes_cold_impl(outsm, i, static_cast<::std::size_t>(e - i)); } diff --git a/include/fast_io_core_impl/simd_find.h b/include/fast_io_core_impl/simd_find.h index 45938f290..9c14517f0 100644 --- a/include/fast_io_core_impl/simd_find.h +++ b/include/fast_io_core_impl/simd_find.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once namespace fast_io::details { @@ -444,9 +444,7 @@ inline constexpr char_type const *find_simd_constant_common_cold_impl(char_type { ::std::size_t diff{static_cast<::std::size_t>(last - first)}; if (diff == 0) -#if __has_cpp_attribute(likely) [[likely]] -#endif { return first; } @@ -507,9 +505,7 @@ find_simd_small_optimization_common_impl(char_type const *first, char_type const --diff; } if (diff) -#if __has_cpp_attribute(likely) [[likely]] -#endif { return first; } diff --git a/include/fast_io_driver/avformat/avio.h b/include/fast_io_driver/avformat/avio.h index 3415ee2e1..404f6cec4 100644 --- a/include/fast_io_driver/avformat/avio.h +++ b/include/fast_io_driver/avformat/avio.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once extern "C" { @@ -42,9 +42,7 @@ inline void write(basic_avio_context_io_observer baciob, char_type co int this_round{INT_MAX}; ::std::size_t diff{static_cast<::std::size_t>(last - first)}; if (diff < mx) -#if __has_cpp_attribute(likely) [[likely]] -#endif { this_round = diff; } @@ -73,9 +71,7 @@ inline char_type *read(basic_avio_context_io_observer baciob, char_ty int this_round{INT_MAX}; ::std::size_t diff{static_cast<::std::size_t>(last - first)}; if (diff < mx) -#if __has_cpp_attribute(likely) [[likely]] -#endif { this_round = diff; } diff --git a/include/fast_io_driver/python/pyobject.h b/include/fast_io_driver/python/pyobject.h index 4be4b1343..b43f19fc9 100644 --- a/include/fast_io_driver/python/pyobject.h +++ b/include/fast_io_driver/python/pyobject.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /* Create python's PyBytesObject by using fast_io's api @@ -97,9 +97,7 @@ inline basic_io_scatter_t pybytes_asstringandsize_impl(PyObject *self) noe char *s{}; Py_ssize_t len{}; if (self != nullptr) -#if __has_cpp_attribute(likely) [[likely]] -#endif { if (::fast_io::noexcept_call(pybytes_asstringandsize_model_impl, self, __builtin_addressof(s), __builtin_addressof(len)) < 0) diff --git a/include/fast_io_dsal/impl/vector.h b/include/fast_io_dsal/impl/vector.h index b29f6ec84..46acf1d15 100644 --- a/include/fast_io_dsal/impl/vector.h +++ b/include/fast_io_dsal/impl/vector.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once namespace fast_io { @@ -892,9 +892,7 @@ class vector FAST_IO_TRIVIALLY_RELOCATABLE_IF_ELIGIBLE inline constexpr reference emplace_back(Args &&...args) noexcept(::std::is_nothrow_constructible_v) { if (imp.curr_ptr == imp.end_ptr) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { grow_twice_impl(); } diff --git a/include/fast_io_hosted/white_hole/white_hole.h b/include/fast_io_hosted/white_hole/white_hole.h index 70b07a093..a37ff247a 100644 --- a/include/fast_io_hosted/white_hole/white_hole.h +++ b/include/fast_io_hosted/white_hole/white_hole.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #if (defined(_WIN32) && !defined(__WINE__)) || defined(__CYGWIN__) #include "rtl_gen_random.h" #include "win32_crypt_gen_random.h" @@ -156,9 +156,7 @@ struct basic_white_hole_engine ::std::size_t diff{static_cast<::std::size_t>(edptr - currptr)}; constexpr ::std::size_t objsz{sizeof(result_type)}; if (diff < objsz) -#if __has_cpp_attribute(unlikely) [[unlikely]] -#endif { ibuffer_minimum_size_underflow_all_prepare_define(instmref); currptr = ibuffer_curr(instmref);