diff options
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/lower-subreg.c | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 958765c..f3b16cd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-08-10 Andreas Krebbel <krebbel1@de.ibm.com> + + * lower-subreg.c (resolve_shift_zext): Don't adjust + src_reg_num for wordmode operands. + 2007-08-10 Sandra Loosemore <sandra@codesourcery.com> David Ung <davidu@mips.com> diff --git a/gcc/lower-subreg.c b/gcc/lower-subreg.c index c61a8b7..4354640 100644 --- a/gcc/lower-subreg.c +++ b/gcc/lower-subreg.c @@ -1043,11 +1043,12 @@ resolve_shift_zext (rtx insn) endian machines this is register 0. */ src_reg_num = GET_CODE (op) == LSHIFTRT ? 1 : 0; - if (WORDS_BIG_ENDIAN) + if (WORDS_BIG_ENDIAN + && GET_MODE_SIZE (GET_MODE (op_operand)) > UNITS_PER_WORD) src_reg_num = 1 - src_reg_num; if (GET_CODE (op) == ZERO_EXTEND) - dest_reg_num = src_reg_num; + dest_reg_num = WORDS_BIG_ENDIAN ? 1 : 0; else dest_reg_num = 1 - src_reg_num; |
