This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
ICE in fixup_reorder_chain, at bb-reorder.c:633
- To: gcc-bugs at gcc dot gnu dot org
- Subject: ICE in fixup_reorder_chain, at bb-reorder.c:633
- From: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- Date: Thu, 7 Sep 2000 13:47:51 -0400 (EDT)
In my latest vax ultrix build using a cvs source from August 29, the
following ICE occurs:
stage1/xgcc -Bstage1/ -B/usr/local/vax-dec-ultrix4.3/bin/ -c -DIN_GCC -g -O3 -W -Wall -Wtraditional -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long -DHAVE_CONFIG_H -I. -I../../gcc -I../../gcc/config -I../../gcc/../include ../../gcc/cpplex.c
../../gcc/cpplex.c: In function `lex_line':
../../gcc/cpplex.c:1825: Internal compiler error in fixup_reorder_chain, at bb-reorder.c:633
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
make[2]: *** [cpplex.o] Error 1
make[2]: Leaving directory `/usr/local/src/gnu/gcc-2.96/objdir/gcc'
make[1]: *** [bootstrap2-lean] Error 2
make[1]: Leaving directory `/usr/local/src/gnu/gcc-2.96/objdir/gcc'
make: *** [bootstrap2-lean] Error 2
Wed Sep 6 00:05:20 EDT 2000
Here is a snipit of the code from bb-reorder.c where the problem occurs:
else
{
/* Otherwise we have some switch or computed jump. In the
99% case, there should not have been a fallthru edge. */
if (! e_fall)
continue;
#ifdef CASE_DROPS_THROUGH
/* Except for VAX. Since we didn't have predication for the
tablejump, the fallthru block should not have moved. */
if (RBI (bb)->index + 1 == RBI (e_fall->dest)->index)
continue;
#endif
abort ();
}
On the vax, CASE_DROPS_THROUGH is defined. The comment states that the
fallthru block can move on the vax and cause an abort.
Any suggestions on how to fix this?
Dave
--
J. David Anglin dave.anglin@nrc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6605)
PS: Here is some additional debugging info:
(gdb) step
630 if (RBI (bb)->index + 1 == RBI (e_fall->dest)->index)
(gdb) p ((reorder_block_def) (e_fall->dest)->aux)->index
$7 = 232
(gdb) p ((reorder_block_def) (bb)->aux)->index + 1
$8 = 245
(gdb) p debug_rtx(bb->end)
(jump_insn 1922 1920 1923 (set (pc)
(if_then_else (leu (minus:SI (reg:SI 0 r0)
(const_int 33 [0x21]))
(const_int 29 [0x1d]))
(plus:SI (sign_extend:SI (mem:HI (plus:SI (pc)
(mult:SI (minus:SI (reg:SI 0 r0)
(const_int 33 [0x21]))
(const_int 2 [0x2]))) 0))
(label_ref:SI 1923))
(pc))) 142 {casesi1} (insn_list 1919 (insn_list 1919 (nil)))
(expr_list:REG_DEAD (reg:SI 0 r0)
(nil)))
$9 = void