Commit 11ae508b by Richard Henderson Committed by Richard Henderson

flow.c (struct reg_cond_life_info): New.

        * flow.c (struct reg_cond_life_info): New.
        (struct propagate_block_info): Add reg_cond_dead and reg_cond_reg.
        (init_propagate_block_info): Initialize them.
        (free_propagate_block_info): Destruct them.
        (mark_set_1): Consider conditional life before killing a register.
        (mark_regno_cond_dead): New.
        (free_reg_cond_life_info): New.
        (flush_reg_cond_reg_1, flush_reg_cond_reg): New.
        (ior_reg_cond, not_reg_cond, nand_reg_cond): New.
        (mark_used_reg): Record conditional life.

        * haifa-sched.c (schedule_insns): Disable death counting
        sanity check for HAVE_conditional_execution.

From-SVN: r33544
parent 614f6bc1
2000-04-30 Richard Henderson <rth@cygnus.com> 2000-04-30 Richard Henderson <rth@cygnus.com>
* flow.c (struct reg_cond_life_info): New.
(struct propagate_block_info): Add reg_cond_dead and reg_cond_reg.
(init_propagate_block_info): Initialize them.
(free_propagate_block_info): Destruct them.
(mark_set_1): Consider conditional life before killing a register.
(mark_regno_cond_dead): New.
(free_reg_cond_life_info): New.
(flush_reg_cond_reg_1, flush_reg_cond_reg): New.
(ior_reg_cond, not_reg_cond, nand_reg_cond): New.
(mark_used_reg): Record conditional life.
* haifa-sched.c (schedule_insns): Disable death counting
sanity check for HAVE_conditional_execution.
2000-04-30 Richard Henderson <rth@cygnus.com>
* Makefile.in (TIMEVAR_H): New. * Makefile.in (TIMEVAR_H): New.
(ggc-simple.o, ggc-page.o, toplev.o, timevar.o): Use it. (ggc-simple.o, ggc-page.o, toplev.o, timevar.o): Use it.
(timevar.h): Remove rule. (timevar.h): Remove rule.
......
...@@ -7019,10 +7019,15 @@ schedule_insns (dump_file) ...@@ -7019,10 +7019,15 @@ schedule_insns (dump_file)
(reload_completed ? PROP_DEATH_NOTES (reload_completed ? PROP_DEATH_NOTES
: PROP_DEATH_NOTES | PROP_REG_INFO)); : PROP_DEATH_NOTES | PROP_REG_INFO));
#ifndef HAVE_conditional_execution
/* ??? REG_DEAD notes only exist for unconditional deaths. We need
a count of the conditional plus unconditional deaths for this to
work out. */
/* In the single block case, the count of registers that died should /* In the single block case, the count of registers that died should
not have changed during the schedule. */ not have changed during the schedule. */
if (count_or_remove_death_notes (blocks, 0) != deaths_in_region[rgn]) if (count_or_remove_death_notes (blocks, 0) != deaths_in_region[rgn])
abort (); abort ();
#endif
} }
if (any_large_regions) if (any_large_regions)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment