aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPierre-Marie de Rodat <derodat@adacore.com>2014-12-17 16:25:30 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2014-12-17 16:25:30 +0000
commitde8143caadb69d37498b11dcd5c1d7ed6dd05ee7 (patch)
treeeda86e5a86e13f036c026c2eed69a3a8c777f126 /gcc
parent616743a89dcc2e240993f4cd57389963f28c1c88 (diff)
downloadgcc-de8143caadb69d37498b11dcd5c1d7ed6dd05ee7.zip
gcc-de8143caadb69d37498b11dcd5c1d7ed6dd05ee7.tar.gz
gcc-de8143caadb69d37498b11dcd5c1d7ed6dd05ee7.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/dwarf2out.c36
2 files changed, 29 insertions, 15 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bfa03b0..2e76f7c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,13 @@
2014-12-17 Pierre-Marie de Rodat <derodat@adacore.com>
+ * 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 <derodat@adacore.com>
+
* dwarf2out.h (enum array_descr_ordering): New.
(array_descr_dimen): Add a bounds_type structure field.
(struct array_descr_info): Add a field to hold index type information
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index f92d31a..4e24f68 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))