LLVM OpenMP
20.0.0git
tools
archer
tests
races
lock-unrelated.c
Go to the documentation of this file.
1
/*
2
* lock-unrelated.c -- Archer testcase
3
*/
4
//===----------------------------------------------------------------------===//
5
//
6
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
7
//
8
// See tools/archer/LICENSE.txt for details.
9
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
10
//
11
//===----------------------------------------------------------------------===//
12
13
// RUN: %libarcher-compile-and-run-race | FileCheck %s
14
// RUN: %libarcher-compile-and-run-race-noserial | FileCheck %s
15
// REQUIRES: tsan
16
#include <omp.h>
17
#include <stdio.h>
18
19
int
main
(
int
argc,
char
*argv[]) {
20
int
var = 0;
21
22
omp_lock_t
lock
;
23
omp_init_lock(&
lock
);
24
25
#pragma omp parallel num_threads(8) shared(var)
26
{
27
omp_set_lock(&
lock
);
28
// Dummy locking.
29
omp_unset_lock(&
lock
);
30
31
var++;
32
}
33
34
omp_destroy_lock(&
lock
);
35
36
int
error = (var != 2);
37
fprintf(stderr,
"DONE\n"
);
38
return
error;
39
}
40
41
// CHECK: WARNING: ThreadSanitizer: data race
42
// CHECK-NEXT: {{(Write|Read)}} of size 4
43
// CHECK-NEXT: #0 {{.*}}lock-unrelated.c:31
44
// CHECK: Previous write of size 4
45
// CHECK-NEXT: #0 {{.*}}lock-unrelated.c:31
46
// CHECK: DONE
47
// CHECK: ThreadSanitizer: reported {{[1-7]}} warnings
lock
static kmp_bootstrap_lock_t lock
Definition:
kmp_i18n.cpp:57
main
int main()
Definition:
test-touch.c:21
Generated on Wed Feb 5 2025 10:57:22 for LLVM OpenMP by
1.9.6