diff --git a/src/include/c.h b/src/include/c.h index 2c2451d11e1..3d047490078 100644 --- a/src/include/c.h +++ b/src/include/c.h @@ -104,6 +104,15 @@ * XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/type_attrib.html */ +/* + * For compilers which don't support __has_attribute, we just define + * __has_attribute(x) to 0 so that we can define macros for various + * __attribute__s more easily below. + */ +#ifndef __has_attribute +#define __has_attribute(attribute) 0 +#endif + /* only GCC supports the unused attribute */ #ifdef __GNUC__ #define pg_attribute_unused() __attribute__((unused)) @@ -195,8 +204,6 @@ * Marking certain functions as "hot" or "cold" can be useful to assist the * compiler in arranging the assembly code in a more efficient way. */ -#if defined(__has_attribute) - #if __has_attribute (cold) #define pg_attribute_cold __attribute__((cold)) #else @@ -209,11 +216,6 @@ #define pg_attribute_hot #endif -#else -#define pg_attribute_hot -#define pg_attribute_cold -#endif - /* * Mark a point as unreachable in a portable fashion. This should preferably * be something that the compiler understands, to aid code generation. diff --git a/src/include/utils/elog.h b/src/include/utils/elog.h index cb7f8c30c30..e8f04a16916 100644 --- a/src/include/utils/elog.h +++ b/src/include/utils/elog.h @@ -160,7 +160,7 @@ extern bool message_level_is_interesting(int elevel); extern bool errstart(int elevel, const char *domain); -extern bool pg_attribute_cold errstart_cold(int elevel, const char *domain); +extern pg_attribute_cold bool errstart_cold(int elevel, const char *domain); extern void errfinish(const char *filename, int lineno, const char *funcname); extern int errcode(int sqlerrcode);