On Thu, 5 Mar 2009, Richard Guenther wrote:

> On Thu, 5 Mar 2009, Jan Hubicka wrote:
> 
> > Hi,
> > this patch resulted from attempt to solve regression we have in
> > gdb.opt/inline-locals.exp gdb testsuite and also problems with fact that 
> > when
> > clonning function by ipa-cp we lose any information on function argument.
> > (and yes, it solves it)
> > 
> > The gdb.opt/inline-locals.exp testsuite shows common pattern
> > 
> > func (argument)
> > {
> > }
> > 
> > otherfunc (otherargument)
> > {
> >   func (otherargument);
> > }
> > 
> > Where we now fully replace ARGUMENT by OTHERARGUMENT when inlining while 
> > older
> > compilers actually substituted backwards, so ARGUMENT was available while
> > OTHERARGUMENT was not.  This is quite irritating behaviour when trying to
> > debug since parameters of inlined functions tends to be lost.
> > 
> > The patch adds mechanizm for tracking inline substitutions, so we
> > actually note that on whole scope of its existence ARGUMENT is having
> > same value as OTHERARGUMENT.  This is represented by extending
> > NONLOCALIZED_VAR vector to contain optimized out declaration and it's
> > replacement
> 
> ...
> 
> This sounds like a simplified (only track parameter "coalescing") form
> of what we implemented on var-mappings-branch.  As I see it would
> work well for wrapper functions, or rather in case either name ends
> up completely unused but will "break" once uses of both names
> persist.  So, do you see any practical use besides C++ wrapper
> functions?  Is it worth fixing them?

Btw, instead of trying to keep trees live and valid why not finally
start generating dwarf at the point we lose this information?

Richard.

Reply via email to