https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94403
Bug ID: 94403 Summary: Missed optimization bswap Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: other Assignee: unassigned at gcc dot gnu.org Reporter: boris_oncev at hotmail dot com Target Milestone: --- 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; }