aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1999-02-10 09:13:41 +0000
committerJeff Law <law@gcc.gnu.org>1999-02-10 02:13:41 -0700
commitf93233bbe9980cac7d633336a280759ba50dc9b1 (patch)
tree1943a695b06e8f9a52b958e1ef6bff07bd7f5f21 /gcc/reload1.c
parent93ea10ba5b8bee5cc7aa10392d7cc80f3662fba5 (diff)
downloadgcc-f93233bbe9980cac7d633336a280759ba50dc9b1.zip
gcc-f93233bbe9980cac7d633336a280759ba50dc9b1.tar.gz
gcc-f93233bbe9980cac7d633336a280759ba50dc9b1.tar.bz2
reload1.c (reload_combine_note_store): Second argument is no longer unused/ignored.
* reload1.c (reload_combine_note_store): Second argument is no longer unused/ignored. Handle multi-register hard regs. (move2add_note_store): Simplify. From-SVN: r25124
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c28
1 files changed, 11 insertions, 17 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index f2cb20d..bfa2502 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -9714,11 +9714,10 @@ reload_combine ()
/* Check if DST is a register or a subreg of a register; if it is,
update reg_state[regno].store_ruid and reg_state[regno].use_index
- accordingly. Called via note_stores from reload_combine.
- The second argument, SET, is ignored. */
+ accordingly. Called via note_stores from reload_combine. */
static void
reload_combine_note_store (dst, set)
- rtx dst, set ATTRIBUTE_UNUSED;
+ rtx dst, set;
{
int regno = 0;
int i;
@@ -9742,8 +9741,11 @@ reload_combine_note_store (dst, set)
|| GET_CODE (SET_DEST (set)) == SIGN_EXTRACT
|| GET_CODE (SET_DEST (set)) == STRICT_LOW_PART)
{
- reg_state[regno].use_index = -1;
- reg_state[regno].store_ruid = reload_combine_ruid;
+ for (i = size / UNITS_PER_WORD - 1 + regno; i >= regno; i--)
+ {
+ reg_state[i].use_index = -1;
+ reg_state[i].store_ruid = reload_combine_ruid;
+ }
}
else
{
@@ -10058,21 +10060,13 @@ move2add_note_store (dst, set)
regno += REGNO (dst);
- if (HARD_REGNO_NREGS (regno, mode) == 1 && GET_CODE (set) == SET)
+ if (HARD_REGNO_NREGS (regno, mode) == 1 && GET_CODE (set) == SET
+ && GET_CODE (SET_DEST (set)) != ZERO_EXTRACT
+ && GET_CODE (SET_DEST (set)) != SIGN_EXTRACT
+ && GET_CODE (SET_DEST (set)) != STRICT_LOW_PART)
{
rtx src = SET_SRC (set);
- /* Indicate that this register has been recently written to,
- but the exact contents are not available. */
- if (GET_CODE (SET_DEST (set)) == ZERO_EXTRACT
- || GET_CODE (SET_DEST (set)) == SIGN_EXTRACT
- || GET_CODE (SET_DEST (set)) == STRICT_LOW_PART)
- {
- reg_set_luid[regno] = move2add_luid;
- reg_offset[regno] = dst;
- return;
- }
-
reg_mode[regno] = mode;
switch (GET_CODE (src))
{