Message ID | 4F7049C5.7040703@gmail.com |
---|---|
State | New |
Headers | show |
> Changelog: > * expmed.c (store_bit_field_1): Fix wordnum value for big endian targets The author line was missing so I put: 2012-03-27 Aurelien Buhrig <aurelien.buhrig.gcc@gmail.com> PR middle-end/51893 * expmed.c (store_bit_field_1): Fix wordnum value for big-endian targets. > Will this fix be backported to 4.6 branch for next release? The policy is to put only fixes for regressions on release branches, and this is obviously not a regression. I think we might want to put it on the 4.7 branch though, because it's early in the release cycle and we fixed a twin bug on that branch (PR middle-end/50325). But it's up to the RMs, now CCed.
On Tue, 27 Mar 2012, Eric Botcazou wrote: > > Changelog: > > * expmed.c (store_bit_field_1): Fix wordnum value for big endian targets > > The author line was missing so I put: > > 2012-03-27 Aurelien Buhrig <aurelien.buhrig.gcc@gmail.com> > > PR middle-end/51893 > * expmed.c (store_bit_field_1): Fix wordnum value for big-endian > targets. > > > Will this fix be backported to 4.6 branch for next release? > > The policy is to put only fixes for regressions on release branches, and this > is obviously not a regression. I think we might want to put it on the 4.7 > branch though, because it's early in the release cycle and we fixed a twin bug > on that branch (PR middle-end/50325). But it's up to the RMs, now CCed. Yes, it's ok for the 4.7 branch. Richard.
Index: gcc/expmed.c =================================================================== --- gcc/expmed.c (revision 185732) +++ gcc/expmed.c (working copy) @@ -550,7 +550,10 @@ { /* If I is 0, use the low-order word in both field and target; if I is 1, use the next to lowest word; and so on. */ - unsigned int wordnum = (backwards ? nwords - i - 1 : i); + unsigned int wordnum = (backwards + ? GET_MODE_SIZE (fieldmode) / UNITS_PER_WORD + - i - 1 + : i); unsigned int bit_offset = (backwards ? MAX ((int) bitsize - ((int) i + 1) * BITS_PER_WORD,