diff options
author | Jim Wilson <wilson@cygnus.com> | 1998-10-22 22:37:03 +0000 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1998-10-22 15:37:03 -0700 |
commit | 9324411a50ae8a1dd51eac8c93ff251ba063915f (patch) | |
tree | e21458bd3e8fd0137fd9e8f0d727e2975a5e5a6b /gcc | |
parent | 8f38ad1fd87f97efa2225d862fc452ec42e4ca20 (diff) | |
download | gcc-9324411a50ae8a1dd51eac8c93ff251ba063915f.zip gcc-9324411a50ae8a1dd51eac8c93ff251ba063915f.tar.gz gcc-9324411a50ae8a1dd51eac8c93ff251ba063915f.tar.bz2 |
Fix v850 build problem stemming from Joern's reload patch.
* v850/v850.c (v850_reorg): Call alter_subreg. Delete subreg support.
From-SVN: r23234
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/v850/v850.c | 19 |
2 files changed, 14 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 23b3802..cb9dd65 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Thu Oct 22 22:34:42 1998 Jim Wilson <wilson@cygnus.com> + + * v850/v850.c (v850_reorg): Call alter_subreg. Delete subreg support. + Fri Oct 23 11:11:56 1998 Michael Hayes <m.hayes@elec.canterbury.ac.nz> * rtl.def (POST_MODIFY, PRE_MODIFY): New generalized operators for diff --git a/gcc/config/v850/v850.c b/gcc/config/v850/v850.c index 8afb2f3..319b6ab 100644 --- a/gcc/config/v850/v850.c +++ b/gcc/config/v850/v850.c @@ -1260,6 +1260,14 @@ void v850_reorg (start_insn) /* Memory operands are signed by default. */ int unsignedp = FALSE; + /* We might have (SUBREG (MEM)) here, so just get rid of the + subregs to make this code simpler. It is safe to call + alter_subreg any time after reload. */ + if (GET_CODE (dest) == SUBREG) + dest = alter_subreg (dest); + if (GET_CODE (src) == SUBREG) + src = alter_subreg (src); + if (GET_CODE (dest) == MEM && GET_CODE (src) == MEM) mem = NULL_RTX; @@ -1312,20 +1320,13 @@ void v850_reorg (start_insn) /* Loading up a register in the basic block zaps any savings for the register */ - if (GET_CODE (dest) == REG || GET_CODE (dest) == SUBREG) + if (GET_CODE (dest) == REG) { enum machine_mode mode = GET_MODE (dest); - int word = 0; int regno; int endregno; - while (GET_CODE (dest) == SUBREG) - { - word = SUBREG_WORD (dest); - dest = SUBREG_REG (dest); - } - - regno = REGNO (dest) + word; + regno = REGNO (dest); endregno = regno + HARD_REGNO_NREGS (regno, mode); if (!use_ep) |