summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2005-04-20 04:54:11 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2005-04-20 04:54:11 +0000
commit87121034113f8b3bb96db325d3260d806f4e103a (patch)
tree4acdd6c4898d643fa0b840941a2d12315366ec66 /gcc/testsuite/gcc.dg
parent039f212de27c41c806d96f52be4b534138dbfc10 (diff)
downloadgcc-87121034113f8b3bb96db325d3260d806f4e103a.tar.gz
* builtins.c (expand_builtin_sync_operation): Revert last change.
* optabs.c (expand_bool_compare_and_swap): Compare vs old value, not vs new value. (expand_compare_and_swap_loop): Likewise. (expand_sync_operation): Remove fallback from NAND to AND; invert memory operand when expanding from cmpxchg. (expand_sync_fetch_operation): Likewise. * doc/extend.texi (Atomic Builtins): Fix docs for nand and compare-and-swap. * config/alpha/alpha.c (alpha_split_atomic_op): Invert memory operand when implementing NAND. Fix double-add for AFTER. * config/alpha/sync.md (sync_nand<I48MODE>): Invert memory operand. (sync_old_nand<I48MODE>, sync_new_nand<I48MODE>): Likewise. (sync_compare_and_swap<I48MODE>): Fix compare vs zero. Return old memory value. (sync_lock_test_and_set<I48MODE>): Remove extra label and last memory barrier. * config/i386/sync.md (sync_compare_and_swap<IMODE>): Fix pattern to return old memory value. (sync_compare_and_swap_cc<IMODE>): Likewise. * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Early return pre-reload. Don't consider output or anti dependencies. * config/ia64/sync.md (IMODE): New. (modesuffix): Add QI and HI. (memory_barrier): Simplify expansion. (sync_compare_and_swap<IMODE>): Use IMODE, not I48MODE. (cmpxchg_acq_<IMODE>): Likewise. (sync_lock_test_and_set<IMODE>): Likewise. (sync_lock_release<IMODE>): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@98436 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.dg')
-rw-r--r--gcc/testsuite/gcc.dg/ia64-sync-1.c7
-rw-r--r--gcc/testsuite/gcc.dg/ia64-sync-2.c7
-rw-r--r--gcc/testsuite/gcc.dg/ia64-sync-3.c7
-rw-r--r--gcc/testsuite/gcc.dg/ia64-sync-4.c10
4 files changed, 18 insertions, 13 deletions
diff --git a/gcc/testsuite/gcc.dg/ia64-sync-1.c b/gcc/testsuite/gcc.dg/ia64-sync-1.c
index c33bf3bf338..f58f8cb80c3 100644
--- a/gcc/testsuite/gcc.dg/ia64-sync-1.c
+++ b/gcc/testsuite/gcc.dg/ia64-sync-1.c
@@ -1,11 +1,12 @@
-/* { dg-do run { target ia64-*-* } } */
+/* { dg-do run } */
+/* { dg-require-effective-target sync_int_long } */
/* { dg-options } */
+/* { dg-options "-march=i486" { target i?86-*-* } } */
+/* { dg-options "-march=i486" { target { x86_64-*-* && ilp32 } } } */
/* Test basic functionality of the intrinsics. The operations should
not be optimized away if no one checks the return values. */
-#include <ia64intrin.h>
-
extern void abort (void);
extern void *memcpy (void *, const void *, __SIZE_TYPE__);
diff --git a/gcc/testsuite/gcc.dg/ia64-sync-2.c b/gcc/testsuite/gcc.dg/ia64-sync-2.c
index e7dd65ff5bc..000a2678fea 100644
--- a/gcc/testsuite/gcc.dg/ia64-sync-2.c
+++ b/gcc/testsuite/gcc.dg/ia64-sync-2.c
@@ -1,10 +1,11 @@
-/* { dg-do run { target ia64-*-* } } */
+/* { dg-do run } */
+/* { dg-require-effective-target sync_int_long } */
/* { dg-options } */
+/* { dg-options "-march=i486" { target i?86-*-* } } */
+/* { dg-options "-march=i486" { target { x86_64-*-* && ilp32 } } } */
/* Test basic functionality of the intrinsics. */
-#include <ia64intrin.h>
-
extern void abort (void);
extern void *memcpy (void *, const void *, __SIZE_TYPE__);
diff --git a/gcc/testsuite/gcc.dg/ia64-sync-3.c b/gcc/testsuite/gcc.dg/ia64-sync-3.c
index c2772f759b6..46f6294aac2 100644
--- a/gcc/testsuite/gcc.dg/ia64-sync-3.c
+++ b/gcc/testsuite/gcc.dg/ia64-sync-3.c
@@ -1,10 +1,11 @@
-/* { dg-do run { target ia64-*-* } } */
+/* { dg-do run } */
+/* { dg-require-effective-target sync_int_long } */
/* { dg-options } */
+/* { dg-options "-march=i486" { target i?86-*-* } } */
+/* { dg-options "-march=i486" { target { x86_64-*-* && ilp32 } } } */
/* Test basic functionality of the intrinsics. */
-#include <ia64intrin.h>
-
extern void abort (void);
extern void *memcpy (void *, const void *, __SIZE_TYPE__);
diff --git a/gcc/testsuite/gcc.dg/ia64-sync-4.c b/gcc/testsuite/gcc.dg/ia64-sync-4.c
index 98dfdac78ac..baeb8527c87 100644
--- a/gcc/testsuite/gcc.dg/ia64-sync-4.c
+++ b/gcc/testsuite/gcc.dg/ia64-sync-4.c
@@ -1,15 +1,17 @@
-/* { dg-do compile { target ia64-*-* } } */
+/* { dg-do compile } */
+/* { dg-require-effective-target sync_int_long } */
/* { dg-options "-O2 -finline-functions" } */
+/* { dg-options "-march=i486" { target i?86-*-* } } */
+/* { dg-options "-march=i486" { target { x86_64-*-* && ilp32 } } } */
-/* Test inlining __sync_bool_compare_and_swap_di. */
+/* Test inlining __sync_bool_compare_and_swap. */
#include <stdbool.h>
-#include <ia64intrin.h>
static bool
compare_and_swap(long *addr, long old, long new_val)
{
- return __sync_bool_compare_and_swap_di(addr, old, new_val);
+ return __sync_bool_compare_and_swap(addr, old, new_val);
}
void