aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2004-11-16 21:11:33 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2004-11-16 21:11:33 +0000
commitd281a1f1bd19c6a8b0f363649f426c945ee8a9ce (patch)
treea88074d110431db7c148c136800ea92354652487 /gcc
parenta3fcfe27d830807b16a3a7b1579d16450fc7cf19 (diff)
downloadgcc-d281a1f1bd19c6a8b0f363649f426c945ee8a9ce.zip
gcc-d281a1f1bd19c6a8b0f363649f426c945ee8a9ce.tar.gz
gcc-d281a1f1bd19c6a8b0f363649f426c945ee8a9ce.tar.bz2
regmove.c (regmove_optimize): Use lowpart_subreg instead of gen_rtx_SUBREG with incorrect offset to compute...
* regmove.c (regmove_optimize): Use lowpart_subreg instead of gen_rtx_SUBREG with incorrect offset to compute SRC_SUBREG. From-SVN: r90762
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/regmove.c7
2 files changed, 9 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1ed68cb..72729f4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-11-16 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * regmove.c (regmove_optimize): Use lowpart_subreg instead of
+ gen_rtx_SUBREG with incorrect offset to compute SRC_SUBREG.
+
2004-11-16 Devang Patel <dpatel@apple.com>
* tree-if-conv.c (clean_predicate_lists): Update gcc_assert check.
diff --git a/gcc/regmove.c b/gcc/regmove.c
index 7f54559..4876111 100644
--- a/gcc/regmove.c
+++ b/gcc/regmove.c
@@ -1150,10 +1150,11 @@ regmove_optimize (rtx f, int nregs, FILE *regmove_dump_file)
&& GET_MODE_SIZE (GET_MODE (dst))
>= GET_MODE_SIZE (GET_MODE (SUBREG_REG (dst))))
{
- src_subreg
- = gen_rtx_SUBREG (GET_MODE (SUBREG_REG (dst)),
- src, SUBREG_BYTE (dst));
dst = SUBREG_REG (dst);
+ src_subreg = lowpart_subreg (GET_MODE (dst),
+ src, GET_MODE (src));
+ if (!src_subreg)
+ continue;
}
if (!REG_P (dst)
|| REGNO (dst) < FIRST_PSEUDO_REGISTER)