PATCH to fix -feliminate-dwarf2-dups

Jason Merrill jason@redhat.com
Tue Jan 23 09:21:00 GMT 2001


I recently happened to notice that we were emitting a reference to offset
0, because I forgot to initialize the die_marked field in new_die.  xcalloc
should avoid that sort of nonsense in the future.

2001-01-23  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (new_die): Use xcalloc.
	(output_die): Abort rather than emit a local reference to offset 0.

*** dwarf2out.c.~1~	Tue Jan 23 17:02:20 2001
--- dwarf2out.c	Tue Jan 23 17:02:21 2001
*************** new_die (tag_value, parent_die)
*** 4817,4832 ****
       register enum dwarf_tag tag_value;
       register dw_die_ref parent_die;
  {
!   register dw_die_ref die = (dw_die_ref) xmalloc (sizeof (die_node));
  
    die->die_tag = tag_value;
-   die->die_abbrev = 0;
-   die->die_offset = 0;
-   die->die_child = NULL;
-   die->die_parent = NULL;
-   die->die_sib = NULL;
-   die->die_attr = NULL;
-   die->die_symbol = NULL;
  
    if (parent_die != NULL)
      add_child_die (parent_die, die);
--- 4817,4825 ----
       register enum dwarf_tag tag_value;
       register dw_die_ref parent_die;
  {
!   register dw_die_ref die = (dw_die_ref) xcalloc (1, sizeof (die_node));
  
    die->die_tag = tag_value;
  
    if (parent_die != NULL)
      add_child_die (parent_die, die);
*************** output_die (die)
*** 6060,6065 ****
--- 6053,6060 ----
  	case dw_val_class_die_ref:
  	  if (AT_ref_external (a))
  	    output_symbolic_ref (AT_ref (a));
+ 	  else if (AT_ref (a)->die_offset == 0)
+ 	    abort ();
  	  else
  	    ASM_OUTPUT_DWARF_DATA (asm_out_file, AT_ref (a)->die_offset);
  	  break;


More information about the Gcc-patches mailing list