This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: [PATCH] Re: reg_dead_notes!=0: New abort in haifa schedulerin latest CVS


Yes, this fixes it for me, too. But now I have an endless loop starting at
line 1767 in find_rgns() for this
<http://homepages.munich.netsurf.de/Franz.Sirl/misc/inode.i> file. It seems
that under some circumstances tail is never (or no longer?) decremented.

BTW, who is maintaining reload/reload1? I have a gdb-backtrace for the
problem I reported in
<http://www.cygnus.com/ml/egcs-bugs/1998-Apr/0172.html>.

Franz.

At 2:48 Uhr -0000 05.05.1998, Jim Wilson wrote:
>-               if (num_succs[j] == 0)
>+               if (out_edges[j] == 0)
>
>Yes, this is a problem.  Rather than revert Jeff's change, I believe this
>fixes the problem the way he intended it to work.  This works for your
>testcase.
>
>A block with no out_edges is a block with one successor which is the
>EXIT_BLOCK.
>
>Mon May  4 19:43:08 1998  Jim Wilson  <wilson@cygnus.com>
>
>	* haifa-sched.c (find_rgns): In no_loops case, fix test for leaf
>	blocks.  Check for 1 successor which is the EXIT_BLOCK.
>
>Index: haifa-sched.c
>===================================================================
>RCS file: /egcs/carton/cvsfiles/egcs/gcc/haifa-sched.c,v
>retrieving revision 1.43
>diff -p -r1.43 haifa-sched.c
>*** haifa-sched.c	1998/04/30 16:25:19	1.43
>--- haifa-sched.c	1998/05/05 02:42:59
>*************** find_rgns (s_preds, s_succs, num_preds,
>*** 1649,1655 ****
>  	  if (no_loops)
>  	    {
>  	      for (j = 0; j < n_basic_blocks; j++)
>! 		if (num_succs[j] == 0)
>  		  {
>  		    queue[++tail] = j;
>  		    SET_BIT (in_queue, j);
>--- 1649,1656 ----
>  	  if (no_loops)
>  	    {
>  	      for (j = 0; j < n_basic_blocks; j++)
>! 		if (num_succs[j] == 1
>! 		    && INT_LIST_VAL (s_succs[j]) == EXIT_BLOCK)
>  		  {
>  		    queue[++tail] = j;
>  		    SET_BIT (in_queue, j);





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]