This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/20177] ICE in schedule-insns for -O2 -fmodulo-sched
- From: "mustafa at il dot ibm dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 16 Mar 2005 17:45:16 -0000
- Subject: [Bug middle-end/20177] ICE in schedule-insns for -O2 -fmodulo-sched
- References: <20050223184602.20177.janis@gcc.gnu.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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