}
#else
#define _cmpccxadd_epi32(A,B,C,D) \
- __builtin_ia32_cmpccxadd ((int *) (A), (int) (B), (int) (C), \
+ __builtin_ia32_cmpccxadd ((A), (int) (B), (int) (C), \
(_CMPCCX_ENUM) (D))
#define _cmpccxadd_epi64(A,B,C,D) \
- __builtin_ia32_cmpccxadd64 ((long long *) (A), (long long) (B), \
- (long long) (C), (_CMPCCX_ENUM) (D))
+ __builtin_ia32_cmpccxadd64 ((A), (long long) (B), (long long) (C), \
+ (_CMPCCX_ENUM) (D))
#endif
#ifdef __DISABLE_CMPCCXADD__
--- /dev/null
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-O0 -mcmpccxadd" } */
+#include <x86gprintrin.h>
+
+short *a;
+int b, c;
+int *d;
+long long e, f;
+
+void extern
+cmpccxadd_test(void)
+{
+ b = _cmpccxadd_epi32 (a, b, c, _CMPCCX_O); /* { dg-error "incompatible pointer type" } */
+ e = _cmpccxadd_epi64 (d, e, f, _CMPCCX_O); /* { dg-error "incompatible pointer type" } */
+}