r188739 - Revert "Revert "Revert "Revert "DebugInfo: Omit debug info for dynamic classes in TUs that do not have the vtable for that class""""

Greg Clayton gclayton at apple.com
Tue Dec 17 12:23:26 PST 2013


> 
> >
> > We do need to have the option to turn this optimization off; preferably we would make off the default for Darwin. Other platforms that use LLDB as their primary debugger may want to do the same thing.
> >
> > Is there no way to fix LLDB so it actually loads in the other dsyms and finds the full definition of the type? It would seem unfortunate to have such a bloated debug info format (not only for this optimization, but for the existing -flimit-debug-info optimizations and anything else we might think of in the future where we can ensure that some debug info is already availabel in another file).
> 
> We can fix LLDB but at what cost? If we don't know where a "foo" base class comes from, should we start download _all_ debug info for _all_ shared libraries until we find it? I don't really like that solution. I would like to see the full base class should always be there and would rather not have to use "-fno-limit-debug-info" which would make the debug info really really really bloated.
> 
> Really really bloated? 
> 
> a) -flimit-debug-info is a more aggressive optimization than the vtable optimization - it will cause many pointer uses to emit only declarations and not definitions in the debug info. (it was even more aggressive before I fixed it 3 months ago - if you were using -flimit-debug-info prior to that then you're already far more tolerant to missing definitions than you realize)

I was saying that using "-fno-limit-debug-info" should not try to cull _any_ debug info and would result in all types being emitted with complete definitions, no?

> 
> b) -flimit-debug-info is worth, at a guess, somewhere between 1 and 5%. This vtable optimization is worth closer to 20%. That's /serious/ bloat to consider accepting.

I don't consider bloat being something that helps us to completely define a type that is going to be use when debugging so we can show the entire type and its member variables to the user. Also to be able to call functions on the base class is helpful too for people evaluating expressions. So I do realize you guys consider this bloat, but this information to us is important for the debug info to be useful. 






More information about the cfe-commits mailing list