Remove redundant data structures and FuncNode's dependencies on old actions
[c11tester.git] / pthread_test / addr-satcycle.cc
diff --git a/pthread_test/addr-satcycle.cc b/pthread_test/addr-satcycle.cc
deleted file mode 100644 (file)
index a3d970b..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * @file addr-satcycle.cc
- * @brief Address-based satisfaction cycle test
- *
- * This program has a peculiar behavior which is technically legal under the
- * current C++ memory model but which is a result of a type of satisfaction
- * cycle. We use this as justification for part of our modifications to the
- * memory model when proving our model-checker's correctness.
- */
-
-#include <atomic>
-#include <pthread.h>
-#include <stdio.h>
-
-#include "model-assert.h"
-
-using namespace std;
-
-atomic_int x[2], idx, y;
-
-int r1, r2, r3; /* "local" variables */
-
-static void *a(void *obj)
-{
-       r1 = idx.load(memory_order_relaxed);
-       x[r1].store(0, memory_order_relaxed);
-
-       /* Key point: can we guarantee that &x[0] == &x[r1]? */
-       r2 = x[0].load(memory_order_relaxed);
-       y.store(r2);
-       return NULL;
-}
-
-static void *b(void *obj)
-{
-       r3 = y.load(memory_order_relaxed);
-       idx.store(r3, memory_order_relaxed);
-       return NULL;
-}
-
-int user_main(int argc, char **argv)
-{
-       pthread_t t1, t2;
-
-       atomic_init(&x[0], 1);
-       atomic_init(&idx, 0);
-       atomic_init(&y, 0);
-
-       printf("Main thread: creating 2 threads\n");
-       pthread_create(&t1,NULL, &a, NULL);
-       pthread_create(&t2,NULL, &b, NULL);
-
-       pthread_join(t1,NULL);
-       pthread_join(t2,NULL);
-       printf("Main thread is finished\n");
-
-       printf("r1 = %d\n", r1);
-       printf("r2 = %d\n", r2);
-       printf("r3 = %d\n", r3);
-
-       /*
-        * This condition should not be hit because it only occurs under a
-        * satisfaction cycle
-        */
-       bool cycle = (r1 == 1 && r2 == 1 && r3 == 1);
-       MODEL_ASSERT(!cycle);
-
-       return 0;
-}