[PATCH] Fix dwarf2out regression from C++17 inline variables changes

Jakub Jelinek jakub@redhat.com
Tue Oct 25 19:56:00 GMT 2016


On Tue, Oct 25, 2016 at 08:06:12PM +0200, Jakub Jelinek wrote:
> I think this patch should fix it, will bootstrap/regtest it now:
> 
> 2016-10-25  Jakub Jelinek  <jakub@redhat.com>
> 
> 	* dwarf2out.c (gen_member_die): Only reparent_child instead of
> 	splice_child_die if child doesn't have DW_AT_specification attribute.

Bootstrapped/regtested on x86_64-linux and i686-linux now, with this
patch C++14 static data members are treated in debug info as they were in
the past, just C++17 static constexpr data mambers or other static inline
data members are treated the new way (definition in DW_TAG_member).

Ok for trunk?

> --- gcc/dwarf2out.c.jj	2016-10-25 19:49:28.000000000 +0200
> +++ gcc/dwarf2out.c	2016-10-25 20:02:33.264639847 +0200
> @@ -22624,7 +22624,8 @@ gen_member_die (tree type, dw_die_ref co
>  	  /* Handle inline static data members, which only have in-class
>  	     declarations.  */
>  	  if (child->die_tag == DW_TAG_variable
> -	      && child->die_parent == comp_unit_die ())
> +	      && child->die_parent == comp_unit_die ()
> +	      && get_AT (child, DW_AT_specification) == NULL)
>  	    {
>  	      reparent_child (child, context_die);
>  	      child->die_tag = DW_TAG_member;
> 

	Jakub



More information about the Gcc-patches mailing list