summaryrefslogtreecommitdiff
path: root/lib/internal.h
diff options
context:
space:
mode:
authorfdrake <fdrake>2003-03-14 17:25:12 +0000
committerfdrake <fdrake>2003-03-14 17:25:12 +0000
commit1f23cd098bd8faae800971f4206d5772ca432c7a (patch)
tree629d6d403b9ada04a75bd89ab10a5f72050d4c1e /lib/internal.h
parentca20ba1824c7216ccee7a6a439b3154a1a06abf1 (diff)
downloadlibexpat-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.h16
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