From de8143caadb69d37498b11dcd5c1d7ed6dd05ee7 Mon Sep 17 00:00:00 2001 From: Pierre-Marie de Rodat Date: Wed, 17 Dec 2014 16:25:30 +0000 Subject: [PATCH] Enable the array descr language hook for all DWARF versions * dwarf2out.c (gen_type_die_with_usage): Enable the array lang-hook even when (dwarf_version < 3 && dwarf_strict). (gen_descr_array_die): Do not output DW_AT_data_locationn, DW_AT_associated, DW_AT_allocated and DW_AT_byte_stride DWARF attributes when (dwarf_version < 3 && dwarf_strict). From-SVN: r218824 --- gcc/ChangeLog | 8 ++++++++ gcc/dwarf2out.c | 36 +++++++++++++++++++++--------------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bfa03b06dda..2e76f7cacec 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2014-12-17 Pierre-Marie de Rodat + + * dwarf2out.c (gen_type_die_with_usage): Enable the array lang-hook + even when (dwarf_version < 3 && dwarf_strict). + (gen_descr_array_die): Do not output DW_AT_data_locationn, + DW_AT_associated, DW_AT_allocated and DW_AT_byte_stride DWARF + attributes when (dwarf_version < 3 && dwarf_strict). + 2014-12-17 Pierre-Marie de Rodat * dwarf2out.h (enum array_descr_ordering): New. diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index f92d31a9fcd..4e24f686f0a 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -17480,15 +17480,19 @@ gen_descr_array_type_die (tree type, struct array_descr_info *info, break; } - if (info->data_location) - add_descr_info_field (array_die, DW_AT_data_location, info->data_location, - info->base_decl); - if (info->associated) - add_descr_info_field (array_die, DW_AT_associated, info->associated, - info->base_decl); - if (info->allocated) - add_descr_info_field (array_die, DW_AT_allocated, info->allocated, - info->base_decl); + if (dwarf_version >= 3 || !dwarf_strict) + { + if (info->data_location) + add_descr_info_field (array_die, DW_AT_data_location, + info->data_location, + info->base_decl); + if (info->associated) + add_descr_info_field (array_die, DW_AT_associated, info->associated, + info->base_decl); + if (info->allocated) + add_descr_info_field (array_die, DW_AT_allocated, info->allocated, + info->base_decl); + } add_gnat_descriptive_type_attribute (array_die, type, context_die); @@ -17519,10 +17523,13 @@ gen_descr_array_type_die (tree type, struct array_descr_info *info, add_descr_info_field (subrange_die, DW_AT_upper_bound, info->dimen[dim].upper_bound, info->base_decl); - if (info->dimen[dim].stride) - add_descr_info_field (subrange_die, DW_AT_byte_stride, - info->dimen[dim].stride, - info->base_decl); + if (dwarf_version >= 3 || !dwarf_strict) + { + if (info->dimen[dim].stride) + add_descr_info_field (subrange_die, DW_AT_byte_stride, + info->dimen[dim].stride, + info->base_decl); + } } gen_type_die (info->element_type, context_die); @@ -20120,8 +20127,7 @@ gen_type_die_with_usage (tree type, dw_die_ref context_die, /* If this is an array type with hidden descriptor, handle it first. */ if (!TREE_ASM_WRITTEN (type) - && lang_hooks.types.get_array_descr_info - && (dwarf_version >= 3 || !dwarf_strict)) + && lang_hooks.types.get_array_descr_info) { memset (&info, 0, sizeof (info)); if (lang_hooks.types.get_array_descr_info (type, &info)) -- 2.30.2