alpha bootstrap failure wrt loop

Joern Rennecke amylaar@cygnus.co.uk
Tue Feb 2 12:26:00 GMT 1999


> > Or actually, can someone tell me where the + 1 in
> > 
> > 	max_uid_for_loop = get_max_uid () + 1;
> > 
> > comes from?  It's from 
> 
> Indeed, that seems to be the problem.  get_max_uid already returns the
> next uid to be assigned - not the last one, as the name would suggest.

Here is a patch for this problem:

Tue Feb  2 20:24:11 1999  J"orn Rennecke <amylaar@cygnus.co.uk>

	* loop.c (loop_optimize): Fix value max_uid_for_loop is reset
	to after find_and_verify_loops call.

Index: loop.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/loop.c,v
retrieving revision 1.125
diff -p -r1.125 loop.c
*** loop.c	1999/02/02 11:52:00	1.125
--- loop.c	1999/02/02 20:23:11
*************** loop_optimize (f, dumpfile, unroll_p, bc
*** 525,535 ****
       but moving this call to init_alias_analysis is more efficient.  */
    init_alias_analysis ();
  
!   /* See if we went too far.  */
    if (get_max_uid () > max_uid_for_loop)
      abort ();
    /* Now reset it to the actual size we need.  See above.  */
!   max_uid_for_loop = get_max_uid () + 1;
  
    /* find_and_verify_loops has already called compute_luids, but it might
       have rearranged code afterwards, so we need to recompute the luids now.  */
--- 525,536 ----
       but moving this call to init_alias_analysis is more efficient.  */
    init_alias_analysis ();
  
!   /* See if we went too far.  Note that get_max_uid already returns
!      one more that the maximum uid of all insn.  */
    if (get_max_uid () > max_uid_for_loop)
      abort ();
    /* Now reset it to the actual size we need.  See above.  */
!   max_uid_for_loop = get_max_uid ();
  
    /* find_and_verify_loops has already called compute_luids, but it might
       have rearranged code afterwards, so we need to recompute the luids now.  */


More information about the Gcc-patches mailing list