This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix PR rtl-optimization/32557 dataflow RTL checking ICE
On Mon, Aug 20, 2007 at 06:06:13PM +0100, Richard Sandiford wrote:
> Rask Ingemann Lambertsen <rask@sygehus.dk> writes:
>
> > We have
> >
> > (gdb) call debug_rtx(mws->mw_reg)
> > (subreg:DF (reg/v:DI 3 r3 [orig:327 d2 ] [327]) 0)
> >
> > (gdb) print *mws
> > $1 = {mw_reg = 0x2b27c6a994e0, type = DF_REF_REG_USE, flags = 100,
> > start_regno = 3, end_regno = 4, mw_order = 207550}
> >
> > which doesn't seem partial to me. A good question is why it doesn't
> > simply read (reg/v:DF 3 r3 ...). Another one is why we call REGNO
> > (mws->mw_reg) instead of using mws->start_regno.
>
> Yes indeed to the last question. I agree that using start_regno is
> the right thing to do here.
Built and tested sh-unknown-elf with no regressions. Bootstrapped and
tested x86_64-uknown-linux-gnu with no regressions. All with
--enable-checking=yes,rtl.
:ADDPATCH dataflow:
2007-08-21 Rask Ingemann Lambertsen <rask@sygehus.dk>
PR rtl-optimization/32557
* df-problems.c (df_note_bb_compute): Use mws->start_regno instead
of REGNO (mws->mw_reg).
Index: gcc/df-problems.c
===================================================================
--- gcc/df-problems.c (revision 127652)
+++ gcc/df-problems.c (working copy)
@@ -3425,7 +3425,7 @@ df_note_bb_compute (unsigned int bb_inde
{
struct df_mw_hardreg *mws = *mws_rec;
if ((mws->type == DF_REF_REG_DEF)
- && !df_ignore_stack_reg (REGNO (mws->mw_reg)))
+ && !df_ignore_stack_reg (mws->start_regno))
old_unused_notes
= df_set_unused_notes_for_mw (insn, old_unused_notes,
mws, live, do_not_gen,
@@ -3488,7 +3488,7 @@ df_note_bb_compute (unsigned int bb_inde
{
struct df_mw_hardreg *mws = *mws_rec;
if ((mws->type != DF_REF_REG_DEF)
- && !df_ignore_stack_reg (REGNO (mws->mw_reg)))
+ && !df_ignore_stack_reg (mws->start_regno))
old_dead_notes
= df_set_dead_notes_for_mw (insn, old_dead_notes,
mws, live, do_not_gen,
--
Rask Ingemann Lambertsen