diff mbox

Fix debug fallout of proposed PR68162 fix

Message ID alpine.LSU.2.11.1511180947350.4884@t29.fhfr.qr
State New
Headers show

Commit Message

Richard Biener Nov. 18, 2015, 8:50 a.m. UTC
The following patch makes sure we still emit a DW_TAG_typedef for
the element typedef in gcc.dg/debug/dwarf2/pr47939-4.c after a change
to how the C frontend structures the variant chain of arrays.

It makes dwarf2out _not_ re-build the variant for arrays (like it
does for vectors).

Patch was tested by Joseph (also on gdb testsuite?) and I'm currently
re-testing on x86_64-unknown-linux-gnu.

Ok for trunk and GCC 5 branch?

Thanks,
Richard.

2015-11-18  Richard Biener  <rguenther@suse.de>

	PR c/68162
	* dwarf2out.c (gen_type_die_with_usage): Keep variant types
	of arrays.

Comments

Marek Polacek Nov. 18, 2015, 10:36 a.m. UTC | #1
On Wed, Nov 18, 2015 at 09:50:26AM +0100, Richard Biener wrote:
> --- gcc/dwarf2out.c	(revision 230428)
> +++ gcc/dwarf2out.c	(working copy)
> @@ -20784,9 +20784,10 @@ gen_type_die_with_usage (tree type, dw_d
>    /* We are going to output a DIE to represent the unqualified version
>       of this type (i.e. without any const or volatile qualifiers) so
>       get the main variant (i.e. the unqualified version) of this type
> -     now.  (Vectors are special because the debugging info is in the
> +     now.  (Vectors and arrays are special because the debugging info is in the
>       cloned type itself).  */
> -  if (TREE_CODE (type) != VECTOR_TYPE)
> +  if (TREE_CODE (type) != VECTOR_TYPE

There's VECTOR_TYPE_P for this if you want to use that.

	Marek
Richard Biener Nov. 26, 2015, 10:49 a.m. UTC | #2
On Wed, 18 Nov 2015, Richard Biener wrote:

> 
> The following patch makes sure we still emit a DW_TAG_typedef for
> the element typedef in gcc.dg/debug/dwarf2/pr47939-4.c after a change
> to how the C frontend structures the variant chain of arrays.
> 
> It makes dwarf2out _not_ re-build the variant for arrays (like it
> does for vectors).
> 
> Patch was tested by Joseph (also on gdb testsuite?) and I'm currently
> re-testing on x86_64-unknown-linux-gnu.
> 
> Ok for trunk and GCC 5 branch?

Ping?

Thanks,
Richard.

> Thanks,
> Richard.
> 
> 2015-11-18  Richard Biener  <rguenther@suse.de>
> 
> 	PR c/68162
> 	* dwarf2out.c (gen_type_die_with_usage): Keep variant types
> 	of arrays.
> 
> Index: gcc/dwarf2out.c
> ===================================================================
> --- gcc/dwarf2out.c	(revision 230428)
> +++ gcc/dwarf2out.c	(working copy)
> @@ -20784,9 +20784,10 @@ gen_type_die_with_usage (tree type, dw_d
>    /* We are going to output a DIE to represent the unqualified version
>       of this type (i.e. without any const or volatile qualifiers) so
>       get the main variant (i.e. the unqualified version) of this type
> -     now.  (Vectors are special because the debugging info is in the
> +     now.  (Vectors and arrays are special because the debugging info is in the
>       cloned type itself).  */
> -  if (TREE_CODE (type) != VECTOR_TYPE)
> +  if (TREE_CODE (type) != VECTOR_TYPE
> +      && TREE_CODE (type) != ARRAY_TYPE)
>      type = type_main_variant (type);
>  
>    /* If this is an array type with hidden descriptor, handle it first.  */
Jason Merrill Nov. 29, 2015, 7:11 p.m. UTC | #3
OK.

Jason
diff mbox

Patch

Index: gcc/dwarf2out.c
===================================================================
--- gcc/dwarf2out.c	(revision 230428)
+++ gcc/dwarf2out.c	(working copy)
@@ -20784,9 +20784,10 @@  gen_type_die_with_usage (tree type, dw_d
   /* We are going to output a DIE to represent the unqualified version
      of this type (i.e. without any const or volatile qualifiers) so
      get the main variant (i.e. the unqualified version) of this type
-     now.  (Vectors are special because the debugging info is in the
+     now.  (Vectors and arrays are special because the debugging info is in the
      cloned type itself).  */
-  if (TREE_CODE (type) != VECTOR_TYPE)
+  if (TREE_CODE (type) != VECTOR_TYPE
+      && TREE_CODE (type) != ARRAY_TYPE)
     type = type_main_variant (type);
 
   /* If this is an array type with hidden descriptor, handle it first.  */