This patch is for the google/gcc-4_6 branch.
Import pending patch from upstream to generate DW_AT_high_pc as a constant
offset relative to DW_AT_low_pc. When splitting DWARF info, generate new
format for location list entries using a start symbol and a length.
Together, these changes reduce the size of the .debug_addr section by half.
Tested with GCC test suite and validate_failures.py.
include/
2012-06-04 Cary Coutant <ccoutant@google.com>
* dwarf2.h (enum dwarf_location_list_entry_type): New enum.
gcc/
2012-06-04 Mark Wielaard <mjw@redhat.com>
Cary Coutant <ccoutant@google.com>
* dwarf2out.c (enum dw_val_class): Add dw_val_class_high_pc.
(struct dw_loc_list_struct): Remove end_index.
(add_AT_low_high_pc): New function.
(AT_lbl): Handle dw_val_class_high_pc.
(print_die): Likewise.
(attr_checksum): Likewise.
(attr_checksum_ordered): Likewise.
(same_dw_val_p): Likewise.
(size_of_die): Likewise.
(value_format): Likewise.
(new_loc_list): Remove end_index.
(output_loc_list): Use new DW_LLE_start_length_entry format.
(output_die): Handle dw_val_class_high_pc.
(gen_subprogram_die): Use add_AT_low_high_pc.
(add_high_low_attributes): Likewise.
(compare_loc_operands): Relax irrelevant assertion when splitting
DWARF.
(index_location_lists): Remove end_index.
(dwarf2out_finish): Use add_AT_low_high_pc.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/google@188206 138bc75d-0d04-0410-961f-82ee72b054a4