2004-02-21 Daniel Jacobowitz * dwarf2read.c (struct partial_die_info): Use bitfields and rearrange members for packing. Replace spec_attr with spec_offset. (load_partial_dies): Only follow structures for C++. (load_partial_die): Use memset. Save specification attributes only as offsets. (fixup_partial_die): Adjust to use spec_offset. 2004-02-21 Daniel Jacobowitz * dwarf2read.c (struct dwarf2_cu): Add partial_die_obstack. (splay_tree_obstack_allocate, splay_tree_obstack_deallocate): New functions. (dwarf2_build_psymtabs_hard): Use splay_tree_new_with_allocator and obstack_free to manage partial_dies. (load_partial_dies): Allocate partial DIEs on the obstack. Don't initialize the splay tree here. 2004-02-21 Daniel Jacobowitz * dwarf2read.c (skip_leb128, peek_die_abbrev, skip_one_die) (skip_children): New functions. (locate_pdi_sibling): Call skip_children. (load_partial_dies): Use peek_die_abbrev and skip_one_die. 2004-02-21 Daniel Jacobowitz * dwarf2read.c (find_partial_die, fixup_partial_die): New functions, broken out from read_partial_die. (read_partial_die): Remove function. (dwarf2_build_psymtabs_hard): Update comments. (scan_partial_symbols): Use the new functions. Reduce copying of partial DIEs. 2004-02-21 Daniel Jacobowitz * dwarf2read.c: Include "splay-tree.h". (struct dwarf2_cu): Add splay tree for partial DIEs. (struct partial_die_info): Move after struct attribute. Add has_specification, spec_attr, die_parent, die_child, and die_sibling fields. (load_partial_dies): New function. (load_partial_die): New function, broken out from read_partial_die. Correct setting of part_die->offset. Save any specification attributes for later. (read_partial_die): Look up DIEs in the splay tree. (dwarf2_build_psymtabs_hard): Initialize partial_dies. Call load_partial_die to read in the compilation unit DIE. Call load_partial_dies. Free the splay tree after use. (scan_partial_symbols): Follow the die_sibling chain. (add_partial_structure): Use die_child and die_sibling instead of read_partial_die and locate_pdi_sibling. (add_partial_enumeration): Likewise. (locate_pdi_sibling): Use load_partial_die instead of read_partial_die. (is_type_tag): New function. * Makefile.in (dwarf2read.o): Update dependencies.