about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pm_config.in.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/pm_config.in.h b/pm_config.in.h
index 684d60a1..c8b3df05 100644
--- a/pm_config.in.h
+++ b/pm_config.in.h
@@ -242,7 +242,28 @@
    and up.
 */
 #if GCCVERSION >=402 && defined(__SSE__) && defined(__SSE2__)
+
+/* Apple, in Mac OSX 10.8, ships:
+
+   > cc --version
+     Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn)
+
+   which masquerades as GCC 4.2.1, but it fails on pamflip_sse.c:
+
+     pamflip_sse.c:136:39: error: use of unknown builtin
+     '__builtin_ia32_pcmpeqb128' [-Wimplicit-function-declaration]
+     register v16qi const compare =__builtin_ia32_pcmpeqb128(vReg,zero128);
+
+   so we disable SSE2 for Apple cc.  The gcc compiler Apple ships is
+   llvm-based and also defines APPLE_CC, and it works fine, so we disable
+   SSE2 only on Clang compilers.
+*/
+#if defined(__APPLE_CC__) && defined(__clang__)
+  #define HAVE_GCC_SSE2 0
+#else
   #define HAVE_GCC_SSE2 1
+#endif
+
 #else
   #define HAVE_GCC_SSE2 0
 #endif