Re: Unimpressed with pg_attribute_always_inline

Thomas Munro <thomas.munro@enterprisedb.com>

From: Thomas Munro <thomas.munro@enterprisedb.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Andres Freund <andres@anarazel.de>, pgsql-hackers@lists.postgresql.org
Date: 2018-01-04T11:11:19Z
Lists: pgsql-hackers

Attachments

On Tue, Jan 2, 2018 at 4:58 PM, Thomas Munro
<thomas.munro@enterprisedb.com> wrote:
> On Tue, Jan 2, 2018 at 4:17 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>>  gaur      | nodeHashjoin.c:167: warning: `always_inline' attribute directive ignored
>>  mastodon  | .\src\backend\executor\nodeHashjoin.c(165): warning C4141: 'inline' : used more than once
>
> 1. MSVC doesn't like you to say both "__forceinline" and "inline".
>
> 2.  GCC 2.95.3 doesn't understand always_inline.  From a quick look at
> archived manuals, it seems that that attribute arrived in 3.1.

Here is one way to fix those warnings.  Thoughts?

>> Therefore, I think that pg_attribute_always_inline is not merely
>> useless but actively bad, and should be removed.

How about a macro PG_NOINLINE, which, if defined, inhibits this?  Or I
could give up this strategy and maintain two separate very similar
functions, ExecHashJoin and ExecParallelHashJoin.

-- 
Thomas Munro
http://www.enterprisedb.com

Commits

  1. Improve implementation of pg_attribute_always_inline.

  2. Add pg_attribute_always_inline.