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