Enable the array descr language hook for all DWARF versions
authorPierre-Marie de Rodat <derodat@adacore.com>
Wed, 17 Dec 2014 16:25:30 +0000 (16:25 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Wed, 17 Dec 2014 16:25:30 +0000 (16:25 +0000)
* 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
gcc/dwarf2out.c

index bfa03b06ddad77ce6d400d9658c2ec3c927e074a..2e76f7cacecceff19c283e6adf8d6e1fc6fbc7af 100644 (file)
@@ -1,3 +1,11 @@
+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.
index f92d31a9fcd1df05477c86f222b3a6277fab7457..4e24f686f0aa9ec94eb71bdb933b2f19549fe714 100644 (file)
@@ -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))