This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix ICE with -feliminate-dwarf2-dups or -gdwarf-4 (PR debug/46123)


On Fri, Nov 26, 2010 at 12:26:22PM +0100, Jakub Jelinek wrote:
> On Thu, Nov 25, 2010 at 10:18:12PM -0500, Jason Merrill wrote:
> > It seems that perhaps the problem is that we are failing to split
> > the abstract and concrete instances here: gen_decl_die has
> > 
> > >        /* If we're emitting an out-of-line copy of an inline function,
> > >           emit info for the abstract instance and set up to refer to it.  */
> > >        else if (cgraph_function_possibly_inlined_p (decl)
> > >                 && ! DECL_ABSTRACT (decl)
> > >                 && ! class_or_namespace_scope_p (context_die)
> > >                 /* dwarf2out_abstract_function won't emit a die if this is just
> > >                    a declaration.  We must avoid setting DECL_ABSTRACT_ORIGIN in
> > >                    that case, because that works only if we have a die.  */
> > >                 && DECL_INITIAL (decl) != NULL_TREE)
> > >          {
> > >            dwarf2out_abstract_function (decl);
> > >            set_decl_origin_self (decl);
> > >          }
> > 
> > but cgraph_function_possibly_inlined_p is false in this case.  I
> > guess that isn't the right test.
> 
> You're right, I'll look at it.

Actually no, the reason we aren't splitting is -O0 and the function
not having always_inline attribute.
We don't split any inlines into abstract/concrete DIEs when no inlining
is performed.

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]