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

            Bug ID: 121769
           Summary: gcc does not optimize manual bswap
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rockeet at gmail dot com
  Target Milestone: ---

long long get_big_endian(const unsigned char* p) {
    long long r = 0;
    for (int i = 0; i < sizeof(long long); i++)
        r |= (long long)(p[i]) << ((sizeof(long long)-1-i)*8);
    return r;
}

clang optimize it to bswap, but gcc does not, see
https://godbolt.org/z/Ge7vox1Tc

Reply via email to