This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] -Winvalid-memory-model warning not given for stdatomic.h macros (PR c/69104)
- From: Andreas Schwab <schwab at linux-m68k dot org>
- To: Marek Polacek <polacek at redhat dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 06 Jan 2016 11:46:32 +0100
- Subject: Re: [PATCH] -Winvalid-memory-model warning not given for stdatomic.h macros (PR c/69104)
- Authentication-results: sourceware.org; auth=none
- References: <20160105150057 dot GF31604 at redhat dot com>
* gcc.dg/atomic-invalid-2.c: Remove duplicated content.
diff --git a/gcc/testsuite/gcc.dg/atomic-invalid-2.c b/gcc/testsuite/gcc.dg/atomic-invalid-2.c
index 6bf5c96..c73458e 100644
--- a/gcc/testsuite/gcc.dg/atomic-invalid-2.c
+++ b/gcc/testsuite/gcc.dg/atomic-invalid-2.c
@@ -57,62 +57,3 @@ clear (atomic_int *i)
atomic_flag_clear_explicit (i, memory_order_acquire); /* { dg-warning "invalid memory model" } */
atomic_flag_clear_explicit (i, memory_order_acq_rel); /* { dg-warning "invalid memory model" } */
}
-/* PR c/69104. Test atomic routines for invalid memory model errors. This
- only needs to be tested on a single size. */
-/* { dg-do compile } */
-/* { dg-require-effective-target sync_int_long } */
-
-#include <stdatomic.h>
-
-/* atomic_store_explicit():
- The order argument shall not be memory_order_acquire,
- memory_order_consume, nor memory_order_acq_rel. */
-
-void
-store (atomic_int *i)
-{
- atomic_store_explicit (i, 0, memory_order_consume); /* { dg-warning "invalid memory model" } */
- atomic_store_explicit (i, 0, memory_order_acquire); /* { dg-warning "invalid memory model" } */
- atomic_store_explicit (i, 0, memory_order_acq_rel); /* { dg-warning "invalid memory model" } */
-}
-
-/* atomic_load_explicit():
- The order argument shall not be memory_order_release nor
- memory_order_acq_rel. */
-
-void
-load (atomic_int *i)
-{
- atomic_int j = atomic_load_explicit (i, memory_order_release); /* { dg-warning "invalid memory model" } */
- atomic_int k = atomic_load_explicit (i, memory_order_acq_rel); /* { dg-warning "invalid memory model" } */
-}
-
-/* atomic_compare_exchange():
- The failure argument shall not be memory_order_release nor
- memory_order_acq_rel. The failure argument shall be no stronger than the
- success argument. */
-
-void
-exchange (atomic_int *i)
-{
- int r;
-
- atomic_compare_exchange_strong_explicit (i, &r, 0, memory_order_seq_cst, memory_order_release); /* { dg-warning "invalid failure memory" } */
- atomic_compare_exchange_strong_explicit (i, &r, 0, memory_order_seq_cst, memory_order_acq_rel); /* { dg-warning "invalid failure memory" } */
- atomic_compare_exchange_strong_explicit (i, &r, 0, memory_order_relaxed, memory_order_consume); /* { dg-warning "failure memory model cannot be stronger" } */
-
- atomic_compare_exchange_weak_explicit (i, &r, 0, memory_order_seq_cst, memory_order_release); /* { dg-warning "invalid failure memory" } */
- atomic_compare_exchange_weak_explicit (i, &r, 0, memory_order_seq_cst, memory_order_acq_rel); /* { dg-warning "invalid failure memory" } */
- atomic_compare_exchange_weak_explicit (i, &r, 0, memory_order_relaxed, memory_order_consume); /* { dg-warning "failure memory model cannot be stronger" } */
-}
-
-/* atomic_flag_clear():
- The order argument shall not be memory_order_acquire nor
- memory_order_acq_rel. */
-
-void
-clear (atomic_int *i)
-{
- atomic_flag_clear_explicit (i, memory_order_acquire); /* { dg-warning "invalid memory model" } */
- atomic_flag_clear_explicit (i, memory_order_acq_rel); /* { dg-warning "invalid memory model" } */
-}
--
2.7.0
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."