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

Reply via email to