This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
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