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
This commit is contained in:
parent
923e8dee88
commit
dbb3d6f010
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user