summaryrefslogtreecommitdiff
path: root/gcc/sched.c
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-10-16 00:08:51 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-10-16 00:08:51 +0000
commit3f4d644cad9690267e1f73e430cae3b01bcdd886 (patch)
tree35e9d178ac30fae30efb3a75fce6b7fa5ed815f3 /gcc/sched.c
parentd11b8a7e6dda35ef0ca02a5b5f902d01b88ba41f (diff)
downloadgcc-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.c32
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 ();