aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ"orn Rennecke <amylaar@cygnus.co.uk>1998-04-27 12:25:51 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>1998-04-27 13:25:51 +0100
commit97d6fd65f38691885064d23587deb009009dd909 (patch)
treed6bb76eeaeb16df1cd1f2580e381ba26b4fa21b5
parent5645adf0a2e0dc6ceac2c6fe1fc26e2f210ea5bb (diff)
downloadgcc-97d6fd65f38691885064d23587deb009009dd909.zip
gcc-97d6fd65f38691885064d23587deb009009dd909.tar.gz
gcc-97d6fd65f38691885064d23587deb009009dd909.tar.bz2
* sh.c (gen_ashift_hi): Don't make SUBREG of a SUBREG.
From-SVN: r19432
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/sh/sh.c12
2 files changed, 14 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0390e7a..601d8fa 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+Mon Apr 27 20:22:08 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * sh.c (gen_ashift_hi): Don't make SUBREG of a SUBREG.
+
Mon Apr 27 18:23:51 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* sh.c (sh_expand_prologue, sh_expand_epilogue):
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 03f6b8a..7e4fa2c 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -922,8 +922,16 @@ gen_ashift_hi (type, n, reg)
zero/sign extension.
gen_ashift_hi is only called in contexts where we know that the
sign extension works out correctly. */
- gen_ashift (type, n, gen_rtx_SUBREG (SImode, reg, 0));
- break;
+ {
+ int word = 0;
+ if (GET_CODE (reg) == SUBREG)
+ {
+ word = SUBREG_WORD (reg);
+ reg = SUBREG_REG (reg);
+ }
+ gen_ashift (type, n, gen_rtx_SUBREG (SImode, reg, word));
+ break;
+ }
case ASHIFT:
emit_insn (gen_ashlhi3_k (reg, reg, GEN_INT (n)));
break;