[Bug tree-optimization/30927] tree-nested creates pointless static chains and trampolines when the callgraph is non-trivial
baldrick at free dot fr
gcc-bugzilla@gcc.gnu.org
Thu Mar 15 15:35:00 GMT 2007
------- Comment #5 from baldrick at free dot fr 2007-03-15 15:34 -------
Subject: Re: tree-nested creates pointless static chains and trampolines when
the callgraph is non-trivial
> > Bootstraps with all languages including Ada. Does not introduce any new
> > testsuite failures. I'd appreciate it if the ACT people could pass it
> > through their regression test suite. I don't know if this interacts
> > correctly with OMP because I don't understand OMP.
>
> What would it buy us over the patch I previously posted?
If I understand right the two patches do different things. Consider
the following example:
void X(void) {
void D(void) { D(); };
D();
}
The nested function is reachable, so presumably your patch doesn't
change the behaviour of tree-nested in this case, i.e. D gets a
static chain even though it doesn't need one. My patch makes sure
that D doesn't get a static chain. It doesn't try to do anything
about unreachable functions. In fact I noticed that unreachable
functions can generate a pointless "nonlocal frame structure", but
decided not to attempt a fix because it seemed much more complicated
to do!
By the way, I see that you added a hash table for going from the
context to the nesting_info. I was too lazy to do that, instead
I do a linear list walk to find it. Do you think it matters?
Ciao,
Duncan.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30927
More information about the Gcc-bugs
mailing list