summaryrefslogtreecommitdiff
path: root/gcc/regmove.c
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/regmove.c
parenta3fcfe27d830807b16a3a7b1579d16450fc7cf19 (diff)
downloadgcc-d281a1f1bd19c6a8b0f363649f426c945ee8a9ce.tar.gz
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/regmove.c')
-rw-r--r--gcc/regmove.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/regmove.c b/gcc/regmove.c
index 7f5455977f9..4876111252e 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)