diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2004-11-16 21:11:33 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2004-11-16 21:11:33 +0000 |
commit | d281a1f1bd19c6a8b0f363649f426c945ee8a9ce (patch) | |
tree | a88074d110431db7c148c136800ea92354652487 /gcc/regmove.c | |
parent | a3fcfe27d830807b16a3a7b1579d16450fc7cf19 (diff) | |
download | gcc-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.c | 7 |
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) |