diff mbox series

Fix debug info for discriminated record types

Message ID 2373481.7fSg0krngQ@polaris
State New
Headers show
Series Fix debug info for discriminated record types | expand

Commit Message

Eric Botcazou July 3, 2019, 10:12 a.m. UTC
Hi,

this is a regression present on the mainline and 9 branch: since
  https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01066.html
the debug info emitted in Ada with -fgnat-encodings=minimal for discriminated 
record types containing an array component whose bound is a discriminant is 
incomplete, i.e. the DW_AT_*_bound attribute of the range subtype is missing.

Tested on x86_64-suse-linux, OK for mainline and 9 branch?


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  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat.dg/specs/debug1.ads: New test.

Comments

Richard Biener July 3, 2019, 11:41 a.m. UTC | #1
On Wed, Jul 3, 2019 at 12:12 PM Eric Botcazou <ebotcazou@adacore.com> wrote:
>
> Hi,
>
> this is a regression present on the mainline and 9 branch: since
>   https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01066.html
> the debug info emitted in Ada with -fgnat-encodings=minimal for discriminated
> record types containing an array component whose bound is a discriminant is
> incomplete, i.e. the DW_AT_*_bound attribute of the range subtype is missing.
>
> Tested on x86_64-suse-linux, OK for mainline and 9 branch?

OK.

Richard.

>
> 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  Eric Botcazou  <ebotcazou@adacore.com>
>
>         * gnat.dg/specs/debug1.ads: New test.
>
> --
> Eric Botcazou
diff mbox series

Patch

Index: dwarf2out.c
===================================================================
--- dwarf2out.c	(revision 272930)
+++ dwarf2out.c	(working copy)
@@ -20845,6 +20845,7 @@  add_scalar_info (dw_die_ref die, enum dw
 	  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);