On January 30, 2015 11:04:23 PM CET, Jason Merrill <ja...@redhat.com> wrote:
>On 01/30/2015 03:36 PM, Aldy Hernandez wrote:
>>   /* It is possible to have both DECL_ABSTRACT_P and DECLARATION be
>true if we
>>      started to generate the abstract instance of an inline, decided
>to output
>>      its containing class, and proceeded to emit the declaration of
>the inline
>>      from the member list for the class.  If so, DECLARATION takes
>priority;
>>      we'll get back to the abstract instance when done with the
>class.  */
>
>This comment is out of date; in this case decl_ultimate_origin will 
>return NULL_TREE, so origin is null, so we shouldn't need to deal with 
>this here.
>
>> +  /* ?? We must not reset `origin', so C++ clones get a proper
>> +     DW_AT_abstract_origin tagged DIE further on.  */
>> +#if 0
>>    /* The class-scope declaration DIE must be the primary DIE.  */
>>    if (origin && declaration && class_or_namespace_scope_p
>(context_die))
>>      {
>>        origin = NULL;
>>        gcc_assert (!old_die);
>>      }
>> +#endif
>
>So I think this block is unnecessary.
>
>> Obviously, now we will get more DIEs than before (complete
>constructors, base constructors, and what have yous).  Whereas
>previously we only generated a DIE for the used ones.
>
>Hmm, that's unfortunate.
>
>What if we leave the clone skipping alone here and emit early debug 
>about all reachable functions in 
>symbol_table::finalize_compilation_unit, between analyze_functions()
>and 
>compile()?

I always thought a user expects debug information for all entities in the 
source, not only those useb by the (optimized) binary.

Richard.

>Jason


Reply via email to