This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [debug-early] fix problem with template parameter packs
- From: Jason Merrill <jason at redhat dot com>
- To: Aldy Hernandez <aldyh at redhat dot com>, Richard Biener <richard dot guenther at gmail dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 05 Jun 2015 10:02:21 -0400
- Subject: Re: [debug-early] fix problem with template parameter packs
- Authentication-results: sourceware.org; auth=none
- References: <55482AF6 dot 1090207 at redhat dot com> <5549314D dot 6080804 at redhat dot com> <5549373F dot 6020503 at redhat dot com> <554A4146 dot 4010501 at redhat dot com> <5564A158 dot 8010604 at redhat dot com> <55661C58 dot 6040305 at redhat dot com> <556EFB62 dot 3040209 at redhat dot com> <CAFiYyc0ED7vRnfK+fC8u4wo0XJWfYznYe3Dhgp4Qw1U5U73ULw at mail dot gmail dot com> <556F1256 dot 1030400 at redhat dot com> <557097BB dot 4080709 at redhat dot com> <55709B60 dot 7050004 at redhat dot com> <5570DFBA dot 9080407 at redhat dot com>
On 06/04/2015 07:31 PM, Aldy Hernandez wrote:
So... if I revert the !declaration change and move the big block below
said change, would you be OK with it, or did you still want some changes
to it?
I'm still hoping to simplify it. Actually, I think we can just remove the
if (old_die && declaration && !local_scope_p (context_die))
check; since inverting its logic didn't seem to break anything before,
it can just go.
And I'd like to rework the logic in the big block so we don't have three
ways of getting to the same thing. Does this work?
if (declaration)
{
/* A declaration that has been previously dumped, needs no
further annotations, since it doesn't need location on
the second pass. */
return;
}
else if (origin && old_die->die_parent != context_die)
{
/* If we will be creating an inlined instance, we need a
new DIE that will get annotated with
DW_AT_abstract_origin. Clear things so we can get a
new DIE. */
gcc_assert (!DECL_ABSTRACT_P (decl));
old_die = NULL;
}
else
{
/* If a DIE was dumped early, it still needs location info.
Skip to where we fill the location bits. */
var_die = old_die;
goto gen_variable_die_location;
}
Jason