Description: Avoid using the MSVC compare and swap with gcc
 Mingw-W64 pretends to be MSVC, but we can't use the version of
 NativeCompareAndSwap() defined for MSVC. This patch avoids using the
 MSVC version when compiling with gcc.
Author: Stephen Kitt <steve@sk2.org>
Forwarded: no
Last-Update: 2010-08-05

--- wine-gecko-1.0.0.orig/js/src/jslock.cpp
+++ wine-gecko-1.0.0/js/src/jslock.cpp
@@ -66,7 +66,7 @@
 
 /* Implement NativeCompareAndSwap. */
 
-#if defined(_WIN32) && defined(_M_IX86)
+#if !defined(__GNUC__) && defined(_WIN32) && defined(_M_IX86)
 #pragma warning( disable : 4035 )
 JS_BEGIN_EXTERN_C
 extern long __cdecl
@@ -91,7 +91,7 @@ NativeCompareAndSwap(jsword *w, jsword o
     return (NativeCompareAndSwapHelper(w, ov, nv) & 1);
 }
 
-#elif defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_X64))
+#elif !defined(__GNUC__) && defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_X64))
 JS_BEGIN_EXTERN_C
 extern long long __cdecl
 _InterlockedCompareExchange64(long long *volatile dest, long long exchange, long long comp);
@@ -104,7 +104,7 @@ NativeCompareAndSwap(jsword *w, jsword o
     return _InterlockedCompareExchange64(w, nv, ov) == ov;
 }
 
-#elif defined(XP_MACOSX) || defined(DARWIN)
+#elif !defined(__GNUC__) && (defined(XP_MACOSX) || defined(DARWIN))
 
 #include <libkern/OSAtomic.h>
 
