A simple byte swap routine gets the wrong result when compiled with -m64 and
either -O1, -O2, -O3 or -Os.

[EMAIL PROTECTED]:~> /opt/biarch/gcc41-base/bin/gcc -O1 -m64 badswap.c
[EMAIL PROTECTED]:~> ./a.out
Before:   0x11  0x22  0x33  0x44  0x55  0x66  0x77  0x88
Result:   0x88  0x77  0x66  0x55  0x44  0x77  0x22  0x11
Expected: 0x88  0x77  0x66  0x55  0x44  0x33  0x22  0x11

Notice the third to last byte in "Result" is 0x77 when it should be 0x33.  This
works with -O0 and with gcc 3.4 or earlier versions.


-- 
           Summary: Wrong result after swap byte in one word when compiled
                    in 64-bit mode
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: regression
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: bergner at vnet dot ibm dot com
 GCC build triplet: powerpc64-linux
  GCC host triplet: powerpc64-linux
GCC target triplet: powerpc64-linux


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28170

Reply via email to