On Fri, 2014-08-29 at 16:48 +0200, Hans-Peter Nilsson wrote:
> > From: David Malcolm <dmalc...@redhat.com>
> > Date: Fri, 29 Aug 2014 13:26:59 +0200
> > On Fri, 2014-08-29 at 06:13 +0200, Hans-Peter Nilsson wrote:
> > > /tmp/hpautotest-gcc1/cris-elf/gccobj/./gcc/xgcc 
> > > -B/tmp/hpautotest-gcc1/cris-elf/gccobj/./gcc/ -nostdinc 
> > > -B/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/newlib/ -isystem 
> > > /tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/newlib/targ-include 
> > > -isystem /tmp/hpautotest-gcc1/gcc/newlib/libc/include 
> > > -B/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libgloss/cris 
> > > -L/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libgloss/libnosys 
> > > -L/tmp/hpautotest-gcc1/gcc/libgloss/cris 
> > > -B/tmp/hpautotest-gcc1/cris-elf/pre/cris-elf/bin/ 
> > > -B/tmp/hpautotest-gcc1/cris-elf/pre/cris-elf/lib/ -isystem 
> > > /tmp/hpautotest-gcc1/cris-elf/pre/cris-elf/include -isystem 
> > > /tmp/hpautotest-gcc1/cris-elf/pre/cris-elf/sys-include    -g -O2 
> > > -march=v8 -mbest-lib-options -O2  -g -O2 -DIN_GCC  
> > > -DCROSS_DIRECTORY_STRUCTURE  -W -Wall -Wwrite-strings -Wcast-qual 
> > > -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem 
> > > ./include   -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector 
> > > -Dinhibit_libc  -I. -I. -I../../.!
 ./.
>  /!
> >  gcc
> > >   -I/tmp/
> > >  hpautotest-gcc1/gcc/libgcc -I/tmp/hpautotest-gcc1/gcc/libgcc/. 
> > > -I/tmp/hpautotest-gcc1/gcc/libgcc/../gcc 
> > > -I/tmp/hpautotest-gcc1/gcc/libgcc/../include  -DHAVE_CC_TLS -DUSE_EMUTLS 
> > > -o _lshrdi3.o -MT _lshrdi3.o -MD -MP -MF _lshrdi3.dep -DL_lshrdi3 -c 
> > > /tmp/hpautotest-gcc1/gcc/libgcc/libgcc2.c -fvisibility=hidden 
> > > -DHIDE_EXPORTS
> > > /tmp/hpautotest-gcc1/gcc/libgcc/libgcc2.c: In function '__lshrdi3':
> > > /tmp/hpautotest-gcc1/gcc/libgcc/libgcc2.c:426:1: internal compiler error: 
> > > in safe_as_a, at is-a.h:205
> > >  }
> > >  ^
> > > 0x9119c2 safe_as_a<rtx_insn*, rtx_def>
> > >         /tmp/hpautotest-gcc1/gcc/gcc/is-a.h:205
> > > 0x9119c2 JUMP_LABEL_AS_INSN
> > >         /tmp/hpautotest-gcc1/gcc/gcc/rtl.h:1663
> > > 0x9119c2 find_dead_or_set_registers
> > >         /tmp/hpautotest-gcc1/gcc/gcc/resource.c:500
> > > 0x912408 mark_target_live_regs(rtx_insn*, rtx_insn*, resources*)
> > >         /tmp/hpautotest-gcc1/gcc/gcc/resource.c:1115
> > > 0x90cb4b fill_slots_from_thread
> > >         /tmp/hpautotest-gcc1/gcc/gcc/reorg.c:2404
> > > 0x90ff45 fill_eager_delay_slots
> > >         /tmp/hpautotest-gcc1/gcc/gcc/reorg.c:2933
> > > 0x90ff45 dbr_schedule
> > >         /tmp/hpautotest-gcc1/gcc/gcc/reorg.c:3742
> > > 0x9108ef rest_of_handle_delay_slots
> > >         /tmp/hpautotest-gcc1/gcc/gcc/reorg.c:3885
> > > 0x9108ef execute
> > >         /tmp/hpautotest-gcc1/gcc/gcc/reorg.c:3916
> > > Please submit a full bug report,
> > > with preprocessed source if appropriate.
> > > Please include the complete backtrace with any bug report.
> > > See <http://gcc.gnu.org/bugs.html> for instructions.
> > > make[4]: *** [_lshrdi3.o] Error 1
> > > 
> > > Use "./cc1 -fpreprocessed this.i -O2" to repeat.
> 
> > Sorry about this.
> > 
> > Looks like I introduced this bug in r214693 (aka patch #225).
> > 
> > The issue is within resource.c:
> > 499                 {
> > 500                   next = JUMP_LABEL_AS_INSN (this_jump_insn);
> > 501                   if (ANY_RETURN_P (next))
> > 502                     next = NULL;
> > 
> > where "next" is an rtx_insn *, but the JUMP_LABEL of this_jump_insn is a
> > RETURN, rather than an insn (several such issues in that commit).
> > 
> > Patch attached, which fixes the above testcase; bootstrap in progress:
> > 
> > gcc/
> >       * resource.h (mark_target_live_regs): Undo erroneous conversion
> >       of second param of r214693, converting it back from rtx_insn * to
> >       rtx, since it could be a RETURN.
> > 
> >       * resource.c (find_dead_or_set_registers): Similarly, convert
> >       param "jump_target" back from an rtx_insn ** to an rtx *, as we
> >       could be writing back a RETURN.  Rename local rtx_insn * "next" to
> >       "next_insn", and introduce "lab_or_return" as a local rtx,
> >       handling the case where JUMP_LABEL (this_jump_insn) is a RETURN.
> >       (mark_target_live_regs): Undo erroneous conversion
> >       of second param of r214693, converting it back from rtx_insn * to
> >       rtx, since it could be a RETURN.  Rename it from "target" to
> >       "target_maybe_return", reintroducing the name "target" as a local
> >       rtx_insn * with a checked cast, after we've handled the case of
> >       ANY_RETURN_P.
> 
> Sorry, but that didn't help.  I still get the exact same error.
> (Yep, I double-checked that I didn't goof testing...)

Fully identical, or just the top 2 frames?  The error in the above
backtrace is the call to JUMP_LABEL_AS_INSN here:

> > 0x9119c2 find_dead_or_set_registers
> > >         /tmp/hpautotest-gcc1/gcc/gcc/resource.c:500

which I believe the patch removes.

That said, PR62304 has *two* backtraces: the one you posted earlier,
plus a similar-looking one due to a different overzealous cast by me at:
0xae862f follow_jumps
        /vol/gcc/src/hg/trunk/local/gcc/reorg.c:2326

Maybe you're seeing that one?  (or a third...)

Dave

Reply via email to