On Dec 17, 2013, at 12:15, David Blaikie <[email protected]> wrote:

> 
> 
> 
>> On Mon, Dec 16, 2013 at 8:06 PM, Adrian Prantl <[email protected]> wrote:
>> 
>> On Dec 16, 2013, at 4:54 PM, Greg Clayton <[email protected]> wrote:
>> 
>> >
>> > On Dec 16, 2013, at 2:55 PM, David Blaikie <[email protected]> wrote:
>> >
>> >>
>> >>
>> >>
>> >> On Mon, Dec 16, 2013 at 2:44 PM, Adrian Prantl <[email protected]> wrote:
>> >> Hi Chandler and David,
>> >>
>> >> unfortunately it looks more like case 1. This optimization breaks several 
>> >> assumptions that tools in our software stack depend on.
>> >>
>> >> It's a fairly substantial debug info size savings that seems worth 
>> >> investigating whether you can keep it enabled at least in
>> >>
>> >> - For example, it breaks dtrace, which on Darwin relies on being able to 
>> >> pull the (complete) CTF info (compact C type format) out of the DWARF in 
>> >> the .dSYM for a given module.
>> >>
>> >> I take it you're already using -fno-limit-debug-info for these scenarios, 
>> >> then? (are you using -flimit-debug-info at all?)
>> >
>> > Yes, this is what will need to happen now that clang has changed.
>> 
>> In case this wasn't clear enough: Currently, this optimization is totally 
>> orthogonal to limited debug info. Passing -fno-limit-debug-info will not 
>> make any of these examples work. This thread is about adding an additional 
>> flag to the frontend that controls this optimization.
>> 
>> I guess we could make also it part of -flimit-debug-info, either way will 
>> work.
>> 
> Agreed. Though I'd rather separate it from -flimit-debug-info. 
> -flimit-debug-info is more aggressive. But, yes, for this particular kernel 
> scenario, if you do end up needing to disable the vtable-based optimization, 
> you should already be disabling -flimit-debug-info.
> 
> - David 

In an attempt to wrap up this discussion:
- this optimization greatly reduces debug info size.
- but there are scenarios where it is useful for users to disable this 
optimization, and not just on Darwin (e.g., when linking against C++ libraries 
that come without debug info)

I hereby propose to go with David’s suggestion above to add an independent 
-femit-class-debug-always option to clang that controls this behavior. I’m also 
volunteering to implement it.

David, it seems as if adding the condition to CreateType() in 
CGDebugInfo.cpp:1473 would do the trick, is that correct?

cheers,
  adrian

*runs for cover :-p*


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to