------- Additional Comments From mustafa at il dot ibm dot com 2005-03-16
17:45 -------
For some reason the REG_DEAD is not the cause of the failure
it is the fact that the SMSed basic-block wasn't mark dirty for
update_life_info that come after it. doing so fixes the failure
even with REG_DEAD is still in that insn. The REG_DEAD note
is correct when we look inter-block so maybe it is still
correct to keep their.
The question is: what is the correct fix for the longer term ?
is it enough to mark the SMSed block dirty? or do we need
also to keep the REG_DEAD correct in each basic-block
separately?
This patch fixes the failure :
Index: modulo-sched.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/modulo-sched.c,v
retrieving revision 1.19
diff -c -p -r1.19 modulo-sched.c
*** modulo-sched.c 1 Dec 2004 00:33:05 -0000 1.19
--- modulo-sched.c 16 Mar 2005 17:20:59 -0000
*************** sms_schedule (FILE *dump_file)
*** 1109,1114 ****
--- 1109,1116 ----
scheduling passes doesn't touch it. */
if (! flag_resched_modulo_sched)
g->bb->flags |= BB_DISABLE_SCHEDULE;
+ /* The life-info is not valid any more. */
+ g->bb->flags |= BB_DIRTY;
generate_reg_moves (ps);
if (dump_file)
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20177