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

Ingo Molnar
2009-01-20T21:06:17Z

* David Woodhouse <dwmw2@infradead.org> wrote:

> On Tue, 2009-01-20 at 13:38 +0100, Ingo Molnar wrote:
> >
> > * Nick Piggin <npiggin@suse.de> wrote:
> >
> > > > > it seems like a nice opt-in thing that can be used where the aliases
> > > > > are verified and the code is particularly performance critical...
> > > >
> > > > Yes. I think we could use it in the kernel, although I'm not sure how
> > > > many cases we would ever find where we really care.
> > >
> > > Yeah, we don't tend to do a lot of intensive data processing, so it is
> > > normally the cache misses that hurt most as you noted earlier.
> > >
> > > Some places it might be appropriate, though. It might be nice if it can
> > > bring code size down too...
> >
> > I checked, its size effects were miniscule [0.17%] on the x86 defconfig
> > kernel and it seems to be a clear loss in total cost as there would be an
> > ongoing maintenance cost
>
> They were talking about 'restrict', not strict-aliasing. Where it can be
> used, it's going to give you optimisations that strict-aliasing can't.

the two are obviously related (just that the 'restrict' keyword can be
used for same-type pointers so it gives even broader leeway) so i used the
0.17% figure i already had to give a ballpark figure about what such type
of optimizations can bring us in general.

(Different-type pointer uses are a common pattern: we have a lot of places
where we have pointers to structures with different types so
strict-aliasing optimization opportunities apply quite broadly already.)

Ingo