pgsql: Add pg_noinline macro to c.h.

Started by Andres Freundover 8 years ago3 messagescomitters
Jump to latest
#1Andres Freund
andres@anarazel.de

Add pg_noinline macro to c.h.

Forcing a function not to be inlined can be useful if it's the
slow-path of a performance critical function, or should be visible in
profiles to allow for proper cost attribution.

Author: Andres Freund
Discussion: /messages/by-id/20170914061207.zxotvyopetm7lrrp@alap3.anarazel.de

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/a0247e7a11bb9f5fd55694b594a3906b7bd05881

Modified Files
--------------
src/include/c.h | 16 ++++++++++++++++
1 file changed, 16 insertions(+)

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Andres Freund (#1)
Re: pgsql: Add pg_noinline macro to c.h.

Andres Freund <andres@anarazel.de> writes:

Add pg_noinline macro to c.h.

I think you want this to be parenthesized so that pgindent doesn't
go nuts when you use it. At least, that was the reason why
pg_attribute_noreturn() has parens. Even if the current version
of pgindent doesn't have that problem, I would argue that consistency
demands that you spell this pg_attribute_noinline().

regards, tom lane

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#3Andres Freund
andres@anarazel.de
In reply to: Tom Lane (#2)
Re: pgsql: Add pg_noinline macro to c.h.

On 2017-10-13 18:32:08 -0400, Tom Lane wrote:

Andres Freund <andres@anarazel.de> writes:

Add pg_noinline macro to c.h.

I think you want this to be parenthesized so that pgindent doesn't
go nuts when you use it. At least, that was the reason why
pg_attribute_noreturn() has parens. Even if the current version
of pgindent doesn't have that problem

The current pgindent actually generates *better* layout with pg_noinline
rather than pg_noinline(). The latter forces a linebreak both in
declarations and definitions like:

static pg_noinline()
HeapTuple SearchCatCacheMiss(CatCache *cache,

static pg_noinline()
HeapTuple
SearchCatCacheMiss(CatCache *cache,

One difference to pg_attribute_noreturn() is that for function
definitions - and noinline needs to be present there IME - you can't put
it after the parameter list.

I would argue that consistency demands that you spell this pg_attribute_noinline().

Hm, I personally find inline vs pg_noinline more aesthetically pleasing.

Greetings,

Andres Freund

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers