egcs-CVS19981007, stage1, all platforms abort in gcse.c:4399

Kaveh R. Ghazi ghazi@caip.rutgers.edu
Wed Oct 7 21:55:00 GMT 1998


	Using the cvs checkout from this evening (19981007), all
platforms (at least mips-sgi-irix6.2, powerpc-ibm-aix4.1.4.0,
alphaev5-dec-osf4.0b and sparc-sun-solaris2.5) appear to die during
stage1 creation of libgcc2.a:

 > for name in _eh; \
 > do \
 >   echo ${name}; \
 >   ./xgcc -B./ -O2 -DIN_GCC -g -I./include -g1 -DIN_LIBGCC2 \
 > 	-D__GCC_FLOA T_NOT_NEEDED -fexceptions -I. -I. -I./config \
 > 	-I./../include -c \
 >       -DL${name} ./libgcc2.c -o ${name}.o; \
 >   if [ $? -eq 0 ] ; then true; else exit 1; fi; \
 >   ar rc tmplibgcc2.a ${name}.o; \
 >   rm -f ${name}.o; \
 > done
 > _eh
 > gcse.c:4399: Internal compiler error
 > make[4]: *** [libgcc2.a] Error 1


	It seems to be aborting because an assertion fails.  The patch
which newly included this test looks like it was this one:


 > Wed Oct  7 10:07:29 1998  Richard Henderson  <rth@cygnus.com>
 > 
 >        * gcse.c (pre_insert_insn): When a call ends a bb, insert
 >        the new insns before the argument regs are loaded.


	Here is the deadly test from gcse.c:4399:


 >       /* It should always be the case that we can put these instructions
 >          anywhere in the basic block.  Check this.  */
 >       /* ??? Well, it would be the case if we'd split all critical edges.
 >          Since we didn't, we may very well abort.  */
 >       if (!TEST_BIT (pre_antloc[bb], expr->bitmap_index)
 >           && !TEST_BIT (pre_transp[bb], expr->bitmap_index))
 >         abort ();
--
Kaveh R. Ghazi			Engagement Manager / Project Services
ghazi@caip.rutgers.edu		Icon CMT Corp.



More information about the Gcc-bugs mailing list