From 7616e1626a8bdb735ed4f0b4da56f4816fc9cded Mon Sep 17 00:00:00 2001 From: Brian Norris Date: Sun, 7 Oct 2012 22:19:01 -0700 Subject: [PATCH] tests: add some normal loads/stores to test data races These tests had become less useful, since the model-checker would ignore release sequence fixup in the absence of pending data races. So add some normal loads and stores to our tests, inducing some data races and some proper synchronization. --- test/pending-release.c | 4 ++++ test/releaseseq.c | 3 +++ 2 files changed, 7 insertions(+) diff --git a/test/pending-release.c b/test/pending-release.c index 37433b1..f3ae9f4 100644 --- a/test/pending-release.c +++ b/test/pending-release.c @@ -12,9 +12,11 @@ #include "stdatomic.h" atomic_int x; +int var = 0; static void a(void *obj) { + store_32(&var, 1); atomic_store_explicit(&x, *((int *)obj), memory_order_release); atomic_store_explicit(&x, *((int *)obj) + 1, memory_order_relaxed); } @@ -23,6 +25,7 @@ static void b2(void *obj) { int r = atomic_load_explicit(&x, memory_order_acquire); printf("r = %u\n", r); + store_32(&var, 3); } static void b1(void *obj) @@ -31,6 +34,7 @@ static void b1(void *obj) int i = 7; int r = atomic_load_explicit(&x, memory_order_acquire); printf("r = %u\n", r); + store_32(&var, 2); thrd_create(&t3, (thrd_start_t)&a, &i); thrd_create(&t4, (thrd_start_t)&b2, NULL); thrd_join(t3); diff --git a/test/releaseseq.c b/test/releaseseq.c index d3127f3..462a59f 100644 --- a/test/releaseseq.c +++ b/test/releaseseq.c @@ -11,9 +11,11 @@ #include "stdatomic.h" atomic_int x; +int var = 0; static void a(void *obj) { + store_32(&var, 1); atomic_store_explicit(&x, 1, memory_order_release); atomic_store_explicit(&x, 42, memory_order_relaxed); } @@ -22,6 +24,7 @@ static void b(void *obj) { int r = atomic_load_explicit(&x, memory_order_acquire); printf("r = %u\n", r); + printf("load %d\n", load_32(&var)); } static void c(void *obj) -- 2.34.1