Re: gcc inlining heuristics was Re: [PATCH -v7][RFC]: mutex: implement adaptive spinning

Jamie Lokier
2009-01-12T23:01:17Z

Linus Torvalds wrote:
> > This is about storage allocation, not aliases. Storage allocation only
> > depends on lifetime.
>
> Well, the thing is, code motion does extend life-times, and if you think
> you can move stores across each other (even when you can see that they
> alias statically) due to type-based alias decisions, that does essentially
> end up making what _used_ to be disjoint lifetimes now be potentially
> overlapping.

Sometimes code motion makes code faster and/or smaller but use more
stack space. If you want to keep the stack use down, it blocks some
other optimisations.

Register allocation is similar: code motion optimisations may use more
registers due to overlapping lifetimes, which causes more register
spills and changes the code. The two interact; it's not trivial to
optimise fully.

-- Jamie