Stop gap fix for __attribute__((cold)) compiler bug in MinGW 8.1

The buildfarm animal walleye, running MinGW 8.1 has been having problems
ever since 697e1d02f and 913ec71d6 went in.  This appears to be a bug in
assembler which was fixed in a later version.

For now, in order to get that animal running green again, let's just
define pg_attribute_cold and pg_attribute_hot to be empty macros on that
compiler.  Hopefully, we can get the support of the owner of the animal to
upgrade to a less buggy compiler and revert this at a later date.

Discussion: https://postgr.es/m/286560.1606233316@sss.pgh.pa.us
This commit is contained in:
David Rowley 2020-11-25 16:33:43 +13:00
parent 7b94e99960
commit 687f616344
1 changed files with 17 additions and 0 deletions

View File

@ -200,6 +200,21 @@
#define pg_noinline
#endif
/*
* For now, just define pg_attribute_cold and pg_attribute_hot to be empty
* macros on minGW 8.1. There appears to be a compiler bug that results in
* compilation failure. At this time, we still have at least one buildfarm
* animal running that compiler, so this should make that green again. It's
* likely this compiler is not popular enough to warrant keeping this code
* around forever, so let's just remove it once the last buildfarm animal
* upgrades.
*/
#if defined(__MINGW64__) && __GNUC__ == 8 && __GNUC_MINOR__ == 1
#define pg_attribute_cold
#define pg_attribute_hot
#else
/*
* Marking certain functions as "hot" or "cold" can be useful to assist the
* compiler in arranging the assembly code in a more efficient way.
@ -216,6 +231,8 @@
#define pg_attribute_hot
#endif
#endif /* defined(__MINGW64__) && __GNUC__ == 8 &&
* __GNUC_MINOR__ == 1 */
/*
* Mark a point as unreachable in a portable fashion. This should preferably
* be something that the compiler understands, to aid code generation.