CVSROOT: /cvs
Module name: src
Changes by: [email protected] 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@.