[RFC] PR 12389

Jason Merrill jason@redhat.com
Sun Oct 19 17:57:00 GMT 2003


On Sun, 19 Oct 2003 10:35:57 +0200, Jan Hubicka <jh@suse.cz> wrote:

>     else if (DECL_ABSTRACT (decl))
>       {
> !       if (DECL_DECLARED_INLINE_P (decl))
>   	{
> !           if (cgraph_function_possibly_inlined_p (decl))
>   	    add_AT_unsigned (subr_die, DW_AT_inline, DW_INL_declared_inlined);
>   	  else
> ! 	    add_AT_unsigned (subr_die, DW_AT_inline, DW_INL_declared_not_inlined);
>   	}
> !       else if (cgraph_function_possibly_inlined_p (decl))
> !         add_AT_unsigned (subr_die, DW_AT_inline, DW_INL_inlined);

Ah, you still need an unconditional 'else'.

else
  add_AT_unsigned (subr_die, DW_AT_inline, DW_INL_not_inlined);

We could also abort, since we shouldn't be generating an abstract instance
in this case.

>         /* 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 (DECL_INLINE (decl) && ! DECL_ABSTRACT (decl)
>   	       && ! class_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
> --- 11796,11802 ----
>   
>         /* 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_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

As discussed in my last mail, we probably also want to do this if
DECL_DECLARED_INLINE_P (decl) && flag_eliminate_dwarf2_dups.  But we should
do some measurement with -feliminate-dwarf2-dups (if it still works) to
make sure it's an improvement.

Jason



More information about the Gcc-patches mailing list