dwarf2out.c (add_scalar_info): Add back refererence to existing DIE if it has the...
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 3 Jul 2019 11:58:49 +0000 (11:58 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Wed, 3 Jul 2019 11:58:49 +0000 (11:58 +0000)
* dwarf2out.c (add_scalar_info): Add back refererence to existing DIE
if it has the DW_AT_data_member_location attribute.

From-SVN: r273002

gcc/ChangeLog
gcc/dwarf2out.c
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/specs/debug1.ads [new file with mode: 0644]

index 77d1f608b1fcc24724765ad47bedf1aed3fa9aaf..154e3361a352a6b66ed2035a4a22dd1cc74633d6 100644 (file)
@@ -1,3 +1,8 @@
+2019-07-03  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * dwarf2out.c (add_scalar_info): Add back refererence to existing DIE
+       if it has the DW_AT_data_member_location attribute.
+
 2019-07-03  Richard Biener  <rguenther@suse.de>
 
        * gimple-pretty-print.c (dump_ternary_rhs): Fix BIT_INSERT_EXPR
index 7fa8b05fe5cdf724fcd6d6f4d49712375ea8417c..6e82802b3a1e232e3501a53f0ab9cc0537a9c544 100644 (file)
@@ -20845,6 +20845,7 @@ add_scalar_info (dw_die_ref die, enum dwarf_attribute attr, tree value,
          if (decl_die != NULL)
            {
              if (get_AT (decl_die, DW_AT_location)
+                 || get_AT (decl_die, DW_AT_data_member_location)
                  || get_AT (decl_die, DW_AT_const_value))
                {
                  add_AT_die_ref (die, attr, decl_die);
index d55211232308bbb1a1c24514d109cf60d2728f34..656b589c0b838f6ef633bf8045f3e3e67ee64093 100644 (file)
@@ -1,3 +1,7 @@
+2019-07-03  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gnat.dg/specs/debug1.ads: New test.
+
 2019-07-03  Martin Liska  <mliska@suse.cz>
 
        PR tree-optimization/90892
diff --git a/gcc/testsuite/gnat.dg/specs/debug1.ads b/gcc/testsuite/gnat.dg/specs/debug1.ads
new file mode 100644 (file)
index 0000000..f94b42a
--- /dev/null
@@ -0,0 +1,18 @@
+-- { dg-do compile }
+-- { dg-options "-cargs -g -dA -fgnat-encodings=minimal -margs" }
+
+package Debug1 is
+
+   type Index_T is new Positive range 1 .. 128;
+
+   type Array_Type is array (Index_T range <>) of Integer;
+
+   type Record_Type (N : Index_T := 16) is record
+      A : Array_Type (1 .. N);
+   end record;
+
+   R : Record_Type;
+
+end Debug1;
+
+--  { dg-final { scan-assembler-times "DW_AT_upper_bound" 4 } }