This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

ICE in fixup_reorder_chain, at bb-reorder.c:633


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]