* config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 5 Nov 2009 23:27:52 +0000 (23:27 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 5 Nov 2009 23:27:52 +0000 (23:27 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@153953 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/ia32intrin.h
gcc/testsuite/g++.dg/other/i386-7.C [new file with mode: 0644]

index d745512..a39ecba 100644 (file)
@@ -1,3 +1,7 @@
+2009-11-05  Richard Henderson  <rth@redhat.com>
+
+       * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
+
 2009-11-05  Paul Brook  <paul@codesourcery.com>
 
        * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
index e701b19..540bc3f 100644 (file)
@@ -49,6 +49,7 @@ __bswapd (int __X)
   return __builtin_bswap32 (__X);
 }
 
+#ifdef __SSE4_2__
 /* 32bit accumulate CRC32 (polynomial 0x11EDC6F41) value.  */
 extern __inline unsigned int
 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
@@ -70,6 +71,7 @@ __crc32d (unsigned int __C, unsigned int __V)
 {
   return __builtin_ia32_crc32si (__C, __V);
 }
+#endif /* SSE4.2 */
 
 /* 32bit popcnt */
 extern __inline int
diff --git a/gcc/testsuite/g++.dg/other/i386-7.C b/gcc/testsuite/g++.dg/other/i386-7.C
new file mode 100644 (file)
index 0000000..e2ad51e
--- /dev/null
@@ -0,0 +1,8 @@
+/* Test that x86intrin.h is usable with -O -pedantic-errors.  */
+/* We were using SSE4.2 builtins without the extension available.  */
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O -pedantic-errors" } */
+
+#include <x86intrin.h>
+
+int dummy;