g++ drops in infinite recursion in fold-const.c / cp/cvt.c

Klaus-Georg Adams Klaus-Georg.Adams@chemie.uni-karlsruhe.de
Thu Oct 8 04:28:00 GMT 1998


I have a C++ source (760k .ii file, available on request) which causes
a sudden death with signal 11 due to an infinite recursion. The start
of the stacktrace is:

#40696 0x80bd26d in fold (expr=0x8237538)
    at /user/adams/egcs-cvs/gcc/fold-const.c:6130
#40697 0x809390c in ocp_convert (type=0x8242aa4, expr=0x8237538, convtype=15, 
    flags=515) at /user/adams/egcs-cvs/gcc/cp/cvt.c:687
#40698 0x8093c7e in convert (type=0x8242aa4, expr=0x8237538)
    at /user/adams/egcs-cvs/gcc/cp/cvt.c:882
#40699 0x80bb3b9 in fold (expr=0x8237510)
    at /user/adams/egcs-cvs/gcc/fold-const.c:5085
#40700 0x80bd26d in fold (expr=0x82374e8)
    at /user/adams/egcs-cvs/gcc/fold-const.c:6130
#40701 0x808e4bb in condition_conversion (expr=0x82374c0)
    at /user/adams/egcs-cvs/gcc/cp/typeck.c:4329
#40702 0x80a1f69 in finish_if_stmt_cond (cond=0x82374c0, if_stmt=0x0)
    at /user/adams/egcs-cvs/gcc/cp/semantics.c:128
#40703 0x8066136 in tsubst_expr (t=0x8613a28, args=0x92bf9a8, 
    in_decl=0x86137b4) at /user/adams/egcs-cvs/gcc/cp/pt.c:6223
#40704 0x80660c4 in tsubst_expr (t=0x86139b8, args=0x92bf9a8, 
    in_decl=0x86137b4) at /user/adams/egcs-cvs/gcc/cp/pt.c:6200
#40705 0x80661ac in tsubst_expr (t=0x86138cc, args=0x92bf9a8, 
    in_decl=0x86137b4) at /user/adams/egcs-cvs/gcc/cp/pt.c:6253
#40706 0x80680c3 in instantiate_decl (d=0x92bfa34)
    at /user/adams/egcs-cvs/gcc/cp/pt.c:8216
#40707 0x80744ad in finish_file () at /user/adams/egcs-cvs/gcc/cp/decl2.c:3302
#40708 0x80a2c77 in finish_translation_unit ()
    at /user/adams/egcs-cvs/gcc/cp/semantics.c:1137
#40709 0x8082305 in yyparse () at parse.y:337
#40710 0x80a8d22 in compile_file (name=0xbffffb50 "difRefList.ii")
    at /user/adams/egcs-cvs/gcc/toplev.c:2786
#40711 0x80ab8c0 in main (argc=22, argv=0xbffff9bc)
    at /user/adams/egcs-cvs/gcc/toplev.c:4860

>From this point on downwards you get the same circle of
#40697 0x809390c in ocp_convert (type=0x8242aa4, expr=0x8237538, convtype=15, 
    flags=515) at /user/adams/egcs-cvs/gcc/cp/cvt.c:687
#40698 0x8093c7e in convert (type=0x8242aa4, expr=0x8237538)
    at /user/adams/egcs-cvs/gcc/cp/cvt.c:882
#40699 0x80bb3b9 in fold (expr=0x8237510)
    at /user/adams/egcs-cvs/gcc/fold-const.c:5085
#40700 0x80bd26d in fold (expr=0x82374e8)
    at /user/adams/egcs-cvs/gcc/fold-const.c:6130

This is with a CVS from 19981007:about 7:00 UTC.

fold-const.c is version 1.48, and cp/cvt.c 1.34
rth was the last to touch fold-const.c, and Mark made recent changes
to cvt.c

I couldn't try a later version because the Bootstrap dies with in ICE
during compilation of libgcc2.c:

for name in _eh; \
do \
  echo ${name}; \
  ./xgcc -B./ -O2   -DIN_GCC   -DUSE_GNULIBC_1 -g -W -Wall -I./include  -fPIC -g1  -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED   -fexceptions -I. -I/work/adams/egcs-cvs/gcc -I/work/adams/egcs-cvs/gcc/config -I/work/adams/egcs-cvs/gcc/../include -c \
      -DL${name} /work/adams/egcs-cvs/gcc/libgcc2.c -o ${name}.o; \
  if [ $? -eq 0 ] ; then true; else exit 1; fi; \
  ` if [ -f /work/adams/egcs-linux/gcc/../binutils/ar ] ; then echo /work/adams/egcs-linux/gcc/../binutils/ar ; else if [ "i686-pc-linux-gnulibc1" = "i686-pc-linux-gnulibc1" ] ; then echo ar; else t='s,x,x,'; echo ar | sed -e $t ; fi; fi` rc tmplibgcc2.a ${name}.o; \
  rm -f ${name}.o; \
done
_eh
/work/adams/egcs-cvs/gcc/gcse.c:4399: Internal compiler error in function pre_insert_insn

-- kga
-------------------------------------------------------------------------
Klaus-Georg Adams        Email: Klaus-Georg.Adams@chemie.uni-karlsruhe.de
Institut f. Anorg. Chemie, Lehrstuhl II            Tel: 49(0)721 608 3485
Universität Karlsruhe, D-76128 Karlsruhe
-------------------------------------------------------------------------



More information about the Gcc-bugs mailing list