Re: Unimpressed with pg_attribute_always_inline - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Unimpressed with pg_attribute_always_inline
Date
Msg-id 24102.1515460809@sss.pgh.pa.us
Whole thread Raw
In response to Re: Unimpressed with pg_attribute_always_inline  (Peter Geoghegan <pg@bowt.ie>)
Responses Re: Unimpressed with pg_attribute_always_inline
List pgsql-hackers
Peter Geoghegan <pg@bowt.ie> writes:
> On Mon, Jan 8, 2018 at 5:09 PM, Peter Eisentraut
> <peter.eisentraut@2ndquadrant.com> wrote:
>> However, at <https://gcc.gnu.org/onlinedocs/gcc/Inline.html> it says,
>> "GCC does not inline any functions when not optimizing unless you
>> specify the ‘always_inline’ attribute for the function".  So,
>> apparently, if the goal is to turn off inlining when not optimizing,
>> then we should just use the normal inline attribute.

> The compiler isn't obligated to inline anything with the normal inline
> attribute. The whole point of always_inline is that the programmer may
> know better than the compiler about inlining in some specific cases,
> and may therefore want to make inlining absolutely mandatory. IIUC,
> that's almost what we want, except that it also inlines with -O0,
> which we do not want.

> Have I missed the point here?

No, you have it right.  I checked locally and confirmed Andres' assertion
that by default, gcc (my version anyway) is not persuaded to inline
ExecHashJoinImpl simply by "inline", but "always_inline" persuades it.
Maybe at some level higher than -O2, or with some other weird flag,
it would do what we want; but we probably don't want to mess with global
compiler flags for this.

            regards, tom lane


pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: Enhance pg_stat_wal_receiver view to display connected host
Next
From: Peter Eisentraut
Date:
Subject: Re: portal pinning