diff options
author | fdrake <fdrake> | 2003-03-14 17:25:12 +0000 |
---|---|---|
committer | fdrake <fdrake> | 2003-03-14 17:25:12 +0000 |
commit | 1f23cd098bd8faae800971f4206d5772ca432c7a (patch) | |
tree | 629d6d403b9ada04a75bd89ab10a5f72050d4c1e /lib/internal.h | |
parent | ca20ba1824c7216ccee7a6a439b3154a1a06abf1 (diff) | |
download | libexpat-1f23cd098bd8faae800971f4206d5772ca432c7a.tar.gz |
Be more defensive: only enable the *CALL macros when using GCC on
Linux, since we know the current definitions work there and have a
positive effect.
This closes SF bug #692878.
Diffstat (limited to 'lib/internal.h')
-rw-r--r-- | lib/internal.h | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/lib/internal.h b/lib/internal.h index 761291b..84e5e2a 100644 --- a/lib/internal.h +++ b/lib/internal.h @@ -20,19 +20,20 @@ and therefore subject to change. */ -#if defined(__GNUC__) && !defined(sun) -/* regparm() generates warnings on Solaris boxes. See SF bug #692878. +#if defined(__GNUC__) && defined(linux) +/* We'll use this version by default only where we know it helps. + + regparm() generates warnings on Solaris boxes. See SF bug #692878. Instability reported with egcs on a RedHat Linux 7.3. - Let's comment it out: + Let's comment out: #define FASTCALL __attribute__((stdcall, regparm(3))) and let's try this: */ #define FASTCALL __attribute__((regparm(3))) -#define PTRCALL #define PTRFASTCALL __attribute__((regparm(3))) +#endif -#elif defined(WIN32) /* Using __fastcall seems to have an unexpected negative effect under MS VC++, especially for function pointers, so we won't use it for now on that platform. It may be reconsidered for a future release @@ -40,11 +41,8 @@ Likely reason: __fastcall on Windows is like stdcall, therefore the compiler cannot perform stack optimizations for call clusters. */ -#define FASTCALL -#define PTRCALL -#define PTRFASTCALL -#endif +/* Make sure all of these are defined if they aren't already. */ #ifndef FASTCALL #define FASTCALL |