summaryrefslogtreecommitdiffstats
path: root/openmp/tools/archer/tests/races/lock-nested-unrelated.c
diff options
context:
space:
mode:
Diffstat (limited to 'openmp/tools/archer/tests/races/lock-nested-unrelated.c')
-rw-r--r--openmp/tools/archer/tests/races/lock-nested-unrelated.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/openmp/tools/archer/tests/races/lock-nested-unrelated.c b/openmp/tools/archer/tests/races/lock-nested-unrelated.c
new file mode 100644
index 00000000000..67d12310f11
--- /dev/null
+++ b/openmp/tools/archer/tests/races/lock-nested-unrelated.c
@@ -0,0 +1,48 @@
+/*
+ * lock-nested-unrelated.c -- Archer testcase
+ */
+
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+//
+// See tools/archer/LICENSE.txt for details.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+
+// RUN: %libarcher-compile-and-run-race | FileCheck %s
+#include <omp.h>
+#include <stdio.h>
+
+int main(int argc, char *argv[]) {
+ int var = 0;
+
+ omp_nest_lock_t lock;
+ omp_init_nest_lock(&lock);
+
+#pragma omp parallel num_threads(2) shared(var)
+ {
+ omp_set_nest_lock(&lock);
+ omp_set_nest_lock(&lock);
+ // Dummy locking.
+ omp_unset_nest_lock(&lock);
+ omp_unset_nest_lock(&lock);
+
+ var++;
+ }
+
+ omp_destroy_nest_lock(&lock);
+
+ fprintf(stderr, "DONE\n");
+}
+
+// CHECK: WARNING: ThreadSanitizer: data race
+// CHECK-NEXT: {{(Write|Read)}} of size 4
+// CHECK-NEXT: #0 {{.*}}lock-nested-unrelated.c:33
+// CHECK: Previous write of size 4
+// CHECK-NEXT: #0 {{.*}}lock-nested-unrelated.c:33
+// CHECK: DONE
+// CHECK: ThreadSanitizer: reported 1 warnings
+
OpenPOWER on IntegriCloud