From f668c507d9d7ac6291bed97e9585c9f2d6856d9e Mon Sep 17 00:00:00 2001 From: "Fred L. Drake, Jr." Date: Fri, 14 Mar 2003 17:25:12 +0000 Subject: [PATCH] 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. --- expat/lib/internal.h | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/expat/lib/internal.h b/expat/lib/internal.h index 761291b5..84e5e2a7 100644 --- a/expat/lib/internal.h +++ b/expat/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