diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-10-16 00:08:51 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-10-16 00:08:51 +0000 |
commit | 3f4d644cad9690267e1f73e430cae3b01bcdd886 (patch) | |
tree | 35e9d178ac30fae30efb3a75fce6b7fa5ed815f3 /gcc/sched.c | |
parent | d11b8a7e6dda35ef0ca02a5b5f902d01b88ba41f (diff) | |
download | gcc-3f4d644cad9690267e1f73e430cae3b01bcdd886.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23120 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sched.c')
-rw-r--r-- | gcc/sched.c | 32 |
1 files changed, 1 insertions, 31 deletions
diff --git a/gcc/sched.c b/gcc/sched.c index 78b879ff97b..1d81407c3f4 100644 --- a/gcc/sched.c +++ b/gcc/sched.c @@ -1554,27 +1554,6 @@ sched_analyze_insn (x, insn, loop_notes) REG_NOTES (insn) = loop_notes; } - /* After reload, it is possible for an instruction to have a REG_DEAD note - for a register that actually dies a few instructions earlier. For - example, this can happen with SECONDARY_MEMORY_NEEDED reloads. - In this case, we must consider the insn to use the register mentioned - in the REG_DEAD note. Otherwise, we may accidentally move this insn - after another insn that sets the register, thus getting obviously invalid - rtl. This confuses reorg which believes that REG_DEAD notes are still - meaningful. - - ??? We would get better code if we fixed reload to put the REG_DEAD - notes in the right places, but that may not be worth the effort. */ - - if (reload_completed) - { - rtx note; - - for (note = REG_NOTES (insn); note; note = XEXP (note, 1)) - if (REG_NOTE_KIND (note) == REG_DEAD) - sched_analyze_2 (XEXP (note, 0), insn); - } - EXECUTE_IF_SET_IN_REG_SET (reg_pending_sets, 0, i, { reg_last_sets[i] = insn; @@ -3849,16 +3828,7 @@ update_flow_info (notes, first, last, orig_insn) register that was not needed by this instantiation of the pattern, so we can safely ignore it. */ if (insn == first) - { - /* After reload, REG_DEAD notes come sometimes an - instruction after the register actually dies. */ - if (reload_completed && REG_NOTE_KIND (note) == REG_DEAD) - { - XEXP (note, 1) = REG_NOTES (insn); - REG_NOTES (insn) = note; - break; - } - + { if (REG_NOTE_KIND (note) != REG_UNUSED) abort (); |