aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel1@de.ibm.com>2007-08-10 17:16:57 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2007-08-10 17:16:57 +0000
commitacbe5496b3160137b72217c7afb80f245dc70699 (patch)
tree76efbc1ba058c1f5b70c4eac5eb34f35ad71c7a6
parent174bd8cad0658aec401a03bfb09edf31545105d5 (diff)
downloadgcc-acbe5496b3160137b72217c7afb80f245dc70699.zip
gcc-acbe5496b3160137b72217c7afb80f245dc70699.tar.gz
gcc-acbe5496b3160137b72217c7afb80f245dc70699.tar.bz2
lower-subreg.c (resolve_shift_zext): Don't adjust src_reg_num for wordmode operands.
2007-08-10 Andreas Krebbel <krebbel1@de.ibm.com> * lower-subreg.c (resolve_shift_zext): Don't adjust src_reg_num for wordmode operands. From-SVN: r127342
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/lower-subreg.c5
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;