Commit dbb3d6f0 authored by Andres Freund's avatar Andres Freund

Add pg_attribute_always_inline.

Sometimes it is useful to be able to insist that the compiler inline a
function that its normal cost analysis would not normally choose to inline.
This can be useful for instantiating different variants of a function that
remove branches of code by constant folding.

Author: Thomas Munro
Reviewed-By: Andres Freund
Discussion: https://postgr.es/m/CAEepm=09rr65VN+cAV5FgyM_z=D77Xy8Fuc9CDDDYbq3pQUezg@mail.gmail.com
parent 923e8dee
......@@ -146,6 +146,16 @@
#define pg_attribute_noreturn()
#endif
/* GCC, Sunpro and XLC support always_inline via __attribute__ */
#if defined(__GNUC__)
#define pg_attribute_always_inline __attribute__((always_inline))
/* msvc via a special keyword */
#elif defined(_MSC_VER)
#define pg_attribute_always_inline __forceinline
#else
#define pg_attribute_always_inline
#endif
/*
* 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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment