On Wed, 2014-08-20 at 12:09 -0400, David Malcolm wrote:
> On Wed, 2014-08-20 at 06:19 -0400, David Malcolm wrote:
> > On Wed, 2014-08-20 at 10:20 +0200, Andreas Schwab wrote:
> > > David Malcolm <dmalc...@redhat.com> writes:
> > > 
> > > > @@ -4083,7 +4083,7 @@ cfg_layout_can_duplicate_bb_p (const_basic_block 
> > > > bb)
> > > >    return true;
> > > >  }
> > > >  
> > > > -rtx
> > > > +rtx_insn *
> > > >  duplicate_insn_chain (rtx from, rtx to)
> > > >  {
> > > >    rtx insn, next, copy;
> > > > @@ -4169,7 +4169,7 @@ duplicate_insn_chain (rtx from, rtx to)
> > > >      }
> > > >    insn = NEXT_INSN (last);
> > > >    delete_insn (last);
> > > > -  return insn;
> > > > +  return as_a <rtx_insn *> (insn);
> > > 
> > > This is wrong, insn may be NULL.
> > 
> > Thanks; and indeed, this broke the bootstrap, as noted in:
> > https://gcc.gnu.org/ml/gcc-patches/2014-08/msg01964.html
> > 
> > Fixed in r214207:
> > https://gcc.gnu.org/ml/gcc-patches/2014-08/msg01971.html
> 
> ...and this has subsequently been filed as PR62203 (retitling
> accordingly).
> 
> > Sorry.  I'm trying to figure out why this didn't break during my
> > testing.  Patch #60 of the original series contained an equivalent as_a
> > -> as_a_nullable hunk:
> > https://gcc.gnu.org/ml/gcc-patches/2014-08/msg00708.html
> > - albeit with a misleading ChangeLog entry (I'm assuming I messed that
> > up during a rebase) - but this hadn't been applied yet.
> 
> I just reran a bootstrap with patches 4-35 containing the unsafe as_a
> cast from #35, on top of r213973 (from 2014-08-14), and somehow it
> successfully bootstrapped and regression tested on
> x86_64-unknown-linux-gnu (Fedora 20).  r213973 has been the baseline
> I've been testing and patching against.
> 
> So presumably something changed *since* r213973 to make the bug in patch
> #35 show itself when applied on a more recent trunk (I was able to
> reproduce the bug on the same machine, with the same configure flags).
> 
> Bother.

I figured this out: my testing bootstrap had a stray
   --enable-checking=release
which meant that the as_a wasn't running the is_a_helper, and hence
gracefully handled a NULL insn.

Fixed now in my testing setup, and am rerunning bootstrap for the
followup patches.

Sorry again.

> I'll rebase against a more recent trunk and retest accordingly for the
> followup patches.  I'll also take another look at the patches that add
> as_a<> (as opposed to safe_as_a<>) [Does this make a case for adding the
> safety check to the is_a_helper functions, and dropping safe_as_a
> variant altogether?]
> 
> Sorry about this
> Dave


Reply via email to