------- Comment #8 from zadeck at naturalbridge dot com  2008-10-12 21:13 
-------
Subject: Re:  [4.4 Regression]: Revision 141067 breaks Linux/x86

andreast at gcc dot gnu dot org wrote:
> ------- Comment #7 from andreast at gcc dot gnu dot org  2008-10-12 20:31 
> -------
> I see a failure on sparc-solaris8/10 too. Configury of stage2 fails.
> Applying the mentioned patch cures compilation.
> My sparc config is with multilib. 32-bit/64-bit.
>
>
>   
The problem is that the bb is no longer kept in the df-ref, and is
instead extracted from the insn.
This particular problem was caused by insns being deleted in a pass that
defers rescanning but that also changes register numbers.   The fix
checks to make sure the insn is still in a basic block before trying to
mark the block as being dirty.

2008-10-12  Kenneth Zadeck <[EMAIL PROTECTED]>

    PR middle-end/37808
    * df-scan.c (df_ref_change_reg_with_loc_1): Added test to make
    sure that ref has valid bb.

Tested by me on both x86-32 and x86-64.   Also tested by andreast on
spark-solaris and by keating.

OK to commit?

kenny
Index: df-scan.c
===================================================================
--- df-scan.c   (revision 141071)
+++ df-scan.c   (working copy)
@@ -1980,7 +1980,8 @@ df_ref_change_reg_with_loc_1 (struct df_
            DF_REF_PREV_REG (new_df->reg_chain) = the_ref;
          new_df->reg_chain = the_ref;
          new_df->n_refs++;
-         df_set_bb_dirty (DF_REF_BB (the_ref));
+         if (DF_REF_BB (the_ref))
+           df_set_bb_dirty (DF_REF_BB (the_ref));

          /* Need to sort the record again that the ref was in because
             the regno is a sorting key.  First, find the right


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37808

Reply via email to