[Bug tree-optimization/93328] missed optimization opportunity in deserialization code

boris_oncev at hotmail dot com gcc-bugzilla@gcc.gnu.org
Mon Mar 30 15:48:35 GMT 2020


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;
}


More information about the Gcc-bugs mailing list