diff options
author | Bernd Schmidt <crux@pool.informatik.rwth-aachen.de> | 1998-10-16 00:08:51 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-10-15 18:08:51 -0600 |
commit | 6764d250ec661945176113c1e58262884c02dc9a (patch) | |
tree | 35e9d178ac30fae30efb3a75fce6b7fa5ed815f3 /gcc/rtlanal.c | |
parent | 913135dfc2dce8e152ff5864dce5fffaca4ce1c5 (diff) | |
download | gcc-6764d250ec661945176113c1e58262884c02dc9a.tar.gz |
flow.c (life_analysis_1): Do not clobber regs_ever_live after reload.
* flow.c (life_analysis_1): Do not clobber regs_ever_live after
reload. Never perform rescans of the insn chain after reload.
(propagate_block): Do not delete insn or create new autoinc addressing
modes after reload.
* jump.c (jump_optimize): Unconditionally use the code that was
previously conditional on PRESERVE_DEATH_INFO_REGNO_P.
* reload1.c (reload): When reloading is finished, delete all
REG_DEAD and REG_UNUSED notes.
(emit_reload_insns): Delete all code that was conditional on
PRESERVE_DEATH_INFO_REGNO_P.
(no_longer_dead_regs): Delete variable.
(reload_cse_delete_death_notes): Delete function.
(reload_cse_no_longer_dead): Delete function.
(reload_cse_regs_1): Delete all code to handle deletion of death
notes.
(reload_cse_noop_set_p): Likewise.
(reload_cse_simplify_set): Likewise.
(reload_cse_simplify_operands): Likewise.
(reload_cse_move2add): Likewise.
* reorg.c (used_spill_regs): Delete declaration.
(max_label_num_after_reload): Delete declaration.
(find_dead_or_set_registers): Don't assume that spill regs are
dead at a CODE_LABEL.
* rtlanal.c (dead_or_set_regno_p): Death notes are always accurate,
even after reload.
* sched.c (sched_analyze_insn): Likewise.
(update_flow_info): Likewise.
* haifa-sched.c (sched_analyze_insn): Likewise.
(update_flow_info): Likewise.
* tm.texi (PRESERVE_DEATH_INFO_REGNO_P): Delete documentation.
* toplev.c (max_label_num_after_reload): Delete variable.
(rest_of_compilation): Don't set max_label_num_after_reload.
Call life_analysis after reload_cse_regs if optimizing.
* config/gmicro/gmicro.h: Delete comment referring to
PRESERVE_DEATH_INFO_REGNO_P.
* config/i386/i386.h: Likewise.
* config/m88k/m88k.h: Likewise.
* config/m32r/m32r.h (PRESERVE_DEATH_INFO_REGNO_P): Delete definition.
* config/sh/sh.h: Likewise.
Accurate REG_DEAD notes after reload.
Co-Authored-By: Jeffrey A Law <law@cygnus.com>
From-SVN: r23120
Diffstat (limited to 'gcc/rtlanal.c')
-rw-r--r-- | gcc/rtlanal.c | 35 |
1 files changed, 13 insertions, 22 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index 15151783875..031d103b34e 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -1194,30 +1194,21 @@ dead_or_set_regno_p (insn, test_regno) int regno, endregno; rtx link; - /* REG_READ notes are not normally maintained after reload, so we - ignore them if the are invalid. */ - if (! reload_completed -#ifdef PRESERVE_DEATH_INFO_REGNO_P - || PRESERVE_DEATH_INFO_REGNO_P (test_regno) -#endif - ) + /* See if there is a death note for something that includes + TEST_REGNO. */ + for (link = REG_NOTES (insn); link; link = XEXP (link, 1)) { - /* See if there is a death note for something that includes - TEST_REGNO. */ - for (link = REG_NOTES (insn); link; link = XEXP (link, 1)) - { - if (REG_NOTE_KIND (link) != REG_DEAD - || GET_CODE (XEXP (link, 0)) != REG) - continue; + if (REG_NOTE_KIND (link) != REG_DEAD + || GET_CODE (XEXP (link, 0)) != REG) + continue; - regno = REGNO (XEXP (link, 0)); - endregno = (regno >= FIRST_PSEUDO_REGISTER ? regno + 1 - : regno + HARD_REGNO_NREGS (regno, - GET_MODE (XEXP (link, 0)))); + regno = REGNO (XEXP (link, 0)); + endregno = (regno >= FIRST_PSEUDO_REGISTER ? regno + 1 + : regno + HARD_REGNO_NREGS (regno, + GET_MODE (XEXP (link, 0)))); - if (test_regno >= regno && test_regno < endregno) - return 1; - } + if (test_regno >= regno && test_regno < endregno) + return 1; } if (GET_CODE (insn) == CALL_INSN @@ -1231,7 +1222,7 @@ dead_or_set_regno_p (insn, test_regno) /* A value is totally replaced if it is the destination or the destination is a SUBREG of REGNO that does not change the number of words in it. */ - if (GET_CODE (dest) == SUBREG + if (GET_CODE (dest) == SUBREG && (((GET_MODE_SIZE (GET_MODE (dest)) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) == ((GET_MODE_SIZE (GET_MODE (SUBREG_REG (dest))) |