This is the mail archive of the gcc-patches@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: bootstrap failure with cvs current and --enable-checking


> *************** copy_loop_body (copy_start, copy_end, ma
> *** 1961,1967 ****
>   	  /* Make split induction variable constants `permanent' since we
>   	     know there are no backward branches across iteration variable
>   	     settings which would invalidate this.  */
> ! 	  if (dest_reg_was_split)
>   	    {
>   	      int regno = REGNO (SET_DEST (pattern));
>   
> --- 1962,1969 ----
>   	  /* Make split induction variable constants `permanent' since we
>   	     know there are no backward branches across iteration variable
>   	     settings which would invalidate this.  */
> ! 	  if (dest_reg_was_split
> !               && (GET_CODE (pattern) == SET || GET_CODE (pattern) == USE))
>   	    {
>   	      int regno = REGNO (SET_DEST (pattern));

Somehow I didn't notice this part of the patch before.  It's
not quite right.  Before, we'd examined the result of single_set
to decide dest_reg_was_split -- continue to do so.


r~


        * unroll.c (copy_loop_body): Examine SET_DEST of single_set
        not of pattern.

Index: unroll.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/unroll.c,v
retrieving revision 1.72
diff -c -p -d -r1.72 unroll.c
*** unroll.c	1999/10/24 20:25:28	1.72
--- unroll.c	1999/10/24 20:29:11
*************** copy_loop_body (copy_start, copy_end, ma
*** 1964,1970 ****
  	     settings which would invalidate this.  */
  	  if (dest_reg_was_split)
  	    {
! 	      int regno = REGNO (SET_DEST (pattern));
  
  	      if ((size_t) regno < VARRAY_SIZE (map->const_equiv_varray)
  		  && (VARRAY_CONST_EQUIV (map->const_equiv_varray, regno).age
--- 1964,1970 ----
  	     settings which would invalidate this.  */
  	  if (dest_reg_was_split)
  	    {
! 	      int regno = REGNO (SET_DEST (set));
  
  	      if ((size_t) regno < VARRAY_SIZE (map->const_equiv_varray)
  		  && (VARRAY_CONST_EQUIV (map->const_equiv_varray, regno).age


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