Avoid DIE freeing overhead

DJ Delorie dj@redhat.com
Tue Apr 18 03:19:00 GMT 2006


> +	    slot = htab_find_slot_with_hash (debug_str_hash, s->str,
> +					     htab_hash_string (s->str),
> +					     INSERT);
> +	    gcc_assert (*slot == NULL);

My m32c-elf newlib builds are crashing at that assert, on an amd64
linux host.

[ gdb ] p *s
$4 = {
  str = 0xa6b5a0 "_next", 
  refcount = 2, 
  form = 0, 
  label = 0x0
}

[ gdb ] p *(struct indirect_string_node *)slot
$5 = {
  str = 0x2a9565e5c0 " µ¦", 
  refcount = 0, 
  form = 0, 
  label = 0x0
}

[ gdb ] p slot
$6 = (void **) 0x2a9570acd8

[ gdb ] p *slot
$7 = (void *) 0x2a9565e5c0

The failed file was strtod.c, with this command:

./cc1 -fpreprocessed strtod.i -quiet -dumpbase strtod.c -mcpu=m32cm \
  -auxbase-strip lib_a-strtod.o -g -Os -O2 -O2 -version -fno-builtin -o \
  strtod.s

This was building as of the 12th.

#1  0x000000000059cd0b in prune_unused_types_update_strings (die=0x2a95671b60)
    at ../../gcc/gcc/dwarf2out.c:14009
#2  0x000000000059cde6 in prune_unused_types_prune (die=0x2a95671af0)
    at ../../gcc/gcc/dwarf2out.c:14038
#3  0x000000000059cdef in prune_unused_types_prune (die=0x2a95660070)
    at ../../gcc/gcc/dwarf2out.c:14039
#4  0x000000000059cf19 in prune_unused_types () at ../../gcc/gcc/dwarf2out.c:14074
#5  0x000000000059d314 in dwarf2out_finish (
    filename=0xa63300 "../../../../../../src/newlib/libc/stdlib/strtod.c")
    at ../../gcc/gcc/dwarf2out.c:14175
#6  0x00000000006a2be6 in toplev_main (argc=<value optimized out>, argv=<value optimized out>)
    at ../../gcc/gcc/toplev.c:1040
#7  0x000000000046ec4f in main (argc=17, argv=0x7fbffff7f8) at ../../gcc/gcc/main.c:35



More information about the Gcc-patches mailing list