------- 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