aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ"orn Rennecke <amylaar@cygnus.co.uk>1998-06-16 15:35:50 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>1998-06-16 16:35:50 +0100
commit75528b80dca75e52c679e37e819a61c266987a02 (patch)
tree8b5ffddae37bd6717b3a9b42aa7d67bf57d6e955
parent42b82dd3b293549c35f118b78e3f93842cf55a5a (diff)
downloadgcc-75528b80dca75e52c679e37e819a61c266987a02.zip
gcc-75528b80dca75e52c679e37e819a61c266987a02.tar.gz
gcc-75528b80dca75e52c679e37e819a61c266987a02.tar.bz2
reload1.c (reload_reg_free_before_p): RELOAD_FOR_OUTADDR_ADDRESS is earlier than RELOAD_FOR_OUTPUT_ADDRESS...
* reload1.c (reload_reg_free_before_p): RELOAD_FOR_OUTADDR_ADDRESS is earlier than RELOAD_FOR_OUTPUT_ADDRESS; RELOAD_FOR_INPADDR_ADDRESS is earlier than RELOAD_FOR_INPUT_ADDRESS. From-SVN: r20526
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/reload1.c8
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 22f3e27..e8f2472 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Tue Jun 16 23:33:24 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * reload1.c (reload_reg_free_before_p): RELOAD_FOR_OUTADDR_ADDRESS
+ is earlier than RELOAD_FOR_OUTPUT_ADDRESS; RELOAD_FOR_INPADDR_ADDRESS
+ is earlier than RELOAD_FOR_INPUT_ADDRESS.
+
Tue Jun 16 13:15:16 1998 Jim Wilson <wilson@cygnus.com>
* libgcc1-test.c (memcpy): Define.
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 23ad439..b1e26ae 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -4658,6 +4658,10 @@ reload_reg_free_before_p (regno, opnum, type)
the first place, since we know that it was allocated. */
case RELOAD_FOR_OUTPUT_ADDRESS:
+ /* Earlier reloads include RELOAD_FOR_INPADDR_ADDRESS reloads. */
+ if (TEST_HARD_REG_BIT (reload_reg_used_in_outaddr_addr[opnum], regno))
+ return 0;
+ /* ... fall through ... */
case RELOAD_FOR_OUTADDR_ADDRESS:
/* Earlier reloads are for earlier outputs or their addresses,
any RELOAD_FOR_INSN reloads, any inputs or their addresses, or any
@@ -4738,6 +4742,10 @@ reload_reg_free_before_p (regno, opnum, type)
return ! TEST_HARD_REG_BIT (reload_reg_used_in_other_addr, regno);
case RELOAD_FOR_INPUT_ADDRESS:
+ /* Earlier reloads include RELOAD_FOR_INPADDR_ADDRESS reloads. */
+ if (TEST_HARD_REG_BIT (reload_reg_used_in_inpaddr_addr[opnum], regno))
+ return 0;
+ /* ... fall through ... */
case RELOAD_FOR_INPADDR_ADDRESS:
/* Similarly, all we have to check is for use in earlier inputs'
addresses. */