diff options
author | Jeffrey A Law <law@cygnus.com> | 1999-02-10 09:13:41 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1999-02-10 02:13:41 -0700 |
commit | f93233bbe9980cac7d633336a280759ba50dc9b1 (patch) | |
tree | 1943a695b06e8f9a52b958e1ef6bff07bd7f5f21 /gcc/reload1.c | |
parent | 93ea10ba5b8bee5cc7aa10392d7cc80f3662fba5 (diff) | |
download | gcc-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.c | 28 |
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)) { |