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]

Re: bootstrap ICE with --enable-checking in dwarf2out.c, current cvs


  In message <199907251810.LAA09048@zack.bitmover.com>you write:
  > 
  > stage1/xgcc -Bstage1/ -c -DIN_GCC -W -Wall -O2 -ggdb -pipe
  > 	-DHAVE_CONFIG_H -I. -I../../../src/egcs/gcc
  > 	-I../../../src/egcs/gcc/config
  > 	-I../../../src/egcs/gcc/../include ../../../src/egcs/gcc/bitmap.c
  > ../../../src/egcs/gcc/bitmap.c: In function `bitmap_clear':
  > ../../../src/egcs/gcc/bitmap.c:643: Internal compiler error in
  > `decl_ultimate_origin', at dwarf2out.c:3630
  > 
  > We're blowing up on this:
  > 
  >  <function_decl 0x84512c4 bitmap_clear
  >     type <function_type 0x8451258
  >         type <void_type 0x82d0b04 void allocated from permanent_obstack
  >             asm_written permanent VOID
  >             size <integer_cst 0x82d0ad4 constant permanent 0>
  >             align 8 symtab 0 alias set 10
  >             pointer_to_this <pointer_type 0x82d0be0>>
  >         allocated from permanent_obstack
  >         permanent DI
  >         size <integer_cst 0x82ca990 constant permanent 64>
  >         align 32 symtab 0 alias set 0
  >         arg-types <tree_list 0x8451200 allocated from permanent_obstack
  >             permanent value <pointer_type 0x8450a94 bitmap>
  >             chain <tree_list 0x8451214 allocated from permanent_obstack
  >                 permanent value <void_type 0x82d0b04 void>>>
  >         pointer_to_this <pointer_type 0x84705e0>>
  >     allocated from permanent_obstack
  >     asm_written used permanent public static QI
  >     file ../../../src/egcs/gcc/bitmap.c line 220
  > *** abstract_origin <function_decl 0x84512c4 bitmap_clear>
  >     arguments <parm_decl 0x8467480 head
  >         type <pointer_type 0x8450a94 bitmap
  > 	    type <record_type 0x83dc4c4 bitmap_head_def>
  >             allocated from permanent_obstack
  >             unsigned permanent SI
  >             size <integer_cst 0x82caa50 constant permanent 32>
  >             align 32 symtab 138165528 alias set 94>
  >         allocated from function maybepermanent obstack
  >         readonly unsigned used common SI
  > 	file ../../../src/egcs/gcc/bitmap.c line 220
  > 	size <integer_cst 0x82caa50 32>
  >         align 32 context <function_decl 0x84512c4 bitmap_clear>
  > 	abstract_origin <parm_decl 0x8467480 head>
  > 	result <error_mark 0x82cf770> initial <pointer_type 0x8450a94 bitmap>
  >         (reg/v:SI 3 %ebx)
  >         incoming-rtl (mem/f:SI (reg:SI 16 %argp) 94)>
  >     result <result_decl 0x8461e08 type <void_type 0x82d0b04 void>
  >         allocated from permanent_obstack
  >         permanent VOID file ../../../src/egcs/gcc/bitmap.c line 220
  > 	size <integer_cst 0x82d0ad4 0>
  >         align 8 context <function_decl 0x84512c4 bitmap_clear>>
  >     initial <block 0x846f708>
  >     (mem/f:QI (symbol_ref:SI ("bitmap_clear")) 0)
  >     saved-insns 0x846f770 chain <var_decl 0x845101c bitmap_zero>>
  > 
  > Note the abstract_origin, which points back to the same decl.  Over in
  > c-decl.c we have this comment (in poplevel, where we are outputting
  > nested inline functions):
  > 
  >      /* If this decl was copied from a file-scope decl
  >         on account of a block-scope extern decl,
  >         propagate TREE_ADDRESSABLE to the file-scope decl.
  > 
  >         DECL_ABSTRACT_ORIGIN can be set to itself if warn_return_type is
  >         true, since then the decl goes through save_for_inline_copying.  */
  > 
  > The beginning of save_for_inline_copying would seem to confirm this:
  > 
  >   /* The fndecl node acts as its own progenitor, so mark it as such.  */
  >   DECL_ABSTRACT_ORIGIN (fndecl) = fndecl;
  > 
  > I conclude that the definition of DECL_FROM_INLINE in tree.h is
  > wrong.  Applying the appended patch allows a successful bootstrap.  I
  > am still running the testsuite.
What is not clear from this patch is whether or not other changes to dwarf2out
and dwarfout are necessary for this to work.

Ie, while you may have removed the abort with ENABLE_CHECKING, there's zero
indication that dwarf2out.c and dwarfout.c will DTRT after you remove the
abort.

I'd like to hear Jason's opinion on this patch before we install it or reject
it.

Jeff

The patch:
  > 
  > zw
  > 
  > Index: tree.h
  > ===================================================================
  > RCS file: /cvs/egcs/egcs/gcc/tree.h,v
  > retrieving revision 1.71
  > diff -u -r1.71 tree.h
  > --- tree.h	1999/05/02 17:43:32	1.71
  > +++ tree.h	1999/07/25 17:25:39
  > @@ -1131,8 +1131,11 @@
  >  
  >  /* Nonzero for any sort of ..._DECL node means this decl node represents
  >     an inline instance of some original (abstract) decl from an inline func
  > tion;
  > -   suppress any warnings about shadowing some other variable.  */
  > -#define DECL_FROM_INLINE(NODE) (DECL_ABSTRACT_ORIGIN (NODE) != (tree) 0)
  > +   suppress any warnings about shadowing some other variable.
  > +   FUNCTION_DECL nodes can also have their abstract origin set to themselv
  > es
  > +   (see save_for_inline_copying).  */
  > +#define DECL_FROM_INLINE(NODE) (DECL_ABSTRACT_ORIGIN (NODE) != (tree) 0 \
  > +				&& DECL_ABSTRACT_ORIGIN (NODE) != (NODE))
  >  
  >  /* Nonzero if a _DECL means that the name of this decl should be ignored
  >     for symbolic debug purposes.  */
  > 
  > 



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