CVSROOT:        /cvs
Module name:    src
Changes by:     marty...@cvs.openbsd.org        2012/12/10 11:06:12

Modified files:
        gnu/gcc/gcc/config/alpha: alpha.md 

Log message:
Fix unaligned memory loads on Alpha.  GCC used to generate them in
the following manner:
([reg:A & -8] << (64 - (((reg:FP+reg:B) & 0x7) << 3))) >> 56

This fails when we're doing loads with the offset from the frame
pointer %8.  Since it's aligned, optimizer makes it a zero.  The
correct expression is:
([reg:A & -8] << (56 - (((reg:FP+reg:B-1) & 0x7) << 3))) >> 56

This is actually a 13-year-old bug.  Checked by Miod;  a few files
in the kernel were affected.  Spotted with SSP for Alpha.
OK miod@.  Tested by naddy@.

Reply via email to