https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93328

--- Comment #5 from Boris <boris_oncev at hotmail dot com> ---
full code:
https://godbolt.org/z/zjNqYV

template <typename T>
auto reverse(T num) {

    // misses optimization when num is int32_t OK for int64_t
    auto* bytes = reinterpret_cast<char*>(&num);

    // misses optimization for both 32 and 64 bit ints
    //auto* bytes = reinterpret_cast<std::byte*>(&num);

    constexpr auto size = sizeof(num);
    for (int i = 0; i < size / 2; i++) {
        std::swap(bytes[i], bytes[size-i-1]);
    }

    return num;
}

Reply via email to