diff options
author | J"orn Rennecke <amylaar@cygnus.co.uk> | 1998-04-27 12:25:51 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 1998-04-27 13:25:51 +0100 |
commit | 97d6fd65f38691885064d23587deb009009dd909 (patch) | |
tree | d6bb76eeaeb16df1cd1f2580e381ba26b4fa21b5 | |
parent | 5645adf0a2e0dc6ceac2c6fe1fc26e2f210ea5bb (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/sh/sh.c | 12 |
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; |