mirror of
https://github.com/postgres/postgres.git
synced 2025-06-17 17:02:08 +03:00
Clean up icc + ia64 situation.
Some googling turned up multiple sources saying that older versions of icc
do not accept gcc-compatible asm blocks on IA64, though asm does work on
x86[_64]. This is apparently fixed as of icc version 12.0 or so, but that
doesn't help us much; if we have to carry the extra implementation anyway,
we may as well just use it for icc rather than add a compiler version test.
Hence, revert commit 2c713d6ea2
(though I
separated the icc code from the gcc code completely, producing what seems
cleaner code). Document the state of affairs more explicitly, both in
s_lock.h and postgres.c, and make some cosmetic adjustments around the
IA64 code in s_lock.h.
This commit is contained in:
@ -2998,6 +2998,10 @@ ProcessInterrupts(void)
|
||||
* IA64-specific code to fetch the AR.BSP register for stack depth checks.
|
||||
*
|
||||
* We currently support gcc, icc, and HP-UX's native compiler here.
|
||||
*
|
||||
* Note: while icc accepts gcc asm blocks on x86[_64], this is not true on
|
||||
* ia64 (at least not in icc versions before 12.x). So we have to carry a
|
||||
* separate implementation for it.
|
||||
*/
|
||||
#if defined(__ia64__) || defined(__ia64)
|
||||
|
||||
@ -3005,8 +3009,12 @@ ProcessInterrupts(void)
|
||||
/* Assume it's HP-UX native compiler */
|
||||
#include <ia64/sys/inline.h>
|
||||
#define ia64_get_bsp() ((char *) (_Asm_mov_from_ar(_AREG_BSP, _NO_FENCE)))
|
||||
#elif defined(__INTEL_COMPILER)
|
||||
/* icc */
|
||||
#include <asm/ia64regs.h>
|
||||
#define ia64_get_bsp() ((char *) __getReg(_IA64_REG_AR_BSP))
|
||||
#else
|
||||
/* Use inline assembly; works with gcc and icc */
|
||||
/* gcc */
|
||||
static __inline__ char *
|
||||
ia64_get_bsp(void)
|
||||
{
|
||||
|
Reference in New Issue
Block a user