LLVM OpenMP
20.0.0git
runtime
test
api
kmp_set_defaults_lock_bug.c
Go to the documentation of this file.
1
// RUN: %libomp-compile-and-run
2
#include <stdio.h>
3
#include "
omp_testsuite.h
"
4
/* The bug occurs if the lock table is reallocated after
5
kmp_set_defaults() is called. If the table is reallocated,
6
then the lock will not point to a valid lock object after the
7
kmp_set_defaults() call.*/
8
omp_lock_t
lock
;
9
10
int
test_kmp_set_defaults_lock_bug
()
11
{
12
/* checks that omp_get_num_threads is equal to the number of
13
threads */
14
int
nthreads_lib;
15
int
nthreads = 0;
16
17
nthreads_lib = -1;
18
19
#pragma omp parallel
20
{
21
omp_set_lock(&
lock
);
22
nthreads++;
23
omp_unset_lock(&
lock
);
24
#pragma omp single
25
{
26
nthreads_lib =
omp_get_num_threads
();
27
}
/* end of single */
28
}
/* end of parallel */
29
kmp_set_defaults
(
"OMP_NUM_THREADS"
);
30
#pragma omp parallel
31
{
32
omp_set_lock(&
lock
);
33
nthreads++;
34
omp_unset_lock(&
lock
);
35
}
/* end of parallel */
36
37
return
(nthreads == 2*nthreads_lib);
38
}
39
40
int
main
()
41
{
42
int
i
;
43
int
num_failed=0;
44
omp_init_lock(&
lock
);
45
46
for
(
i
= 0;
i
<
REPETITIONS
;
i
++) {
47
if
(!
test_kmp_set_defaults_lock_bug
()) {
48
num_failed++;
49
}
50
}
51
omp_destroy_lock(&
lock
);
52
return
num_failed;
53
}
test_kmp_set_defaults_lock_bug
int test_kmp_set_defaults_lock_bug()
Definition:
kmp_set_defaults_lock_bug.c:10
main
int main()
Definition:
kmp_set_defaults_lock_bug.c:40
lock
omp_lock_t lock
Definition:
kmp_set_defaults_lock_bug.c:8
i
#define i
Definition:
kmp_stub.cpp:87
kmp_set_defaults
#define kmp_set_defaults
Definition:
kmp_stub.cpp:45
omp_testsuite.h
REPETITIONS
#define REPETITIONS
Definition:
omp_testsuite.h:13
omp_get_num_threads
int omp_get_num_threads()
Generated on Wed Feb 5 2025 10:57:20 for LLVM OpenMP by
1.9.6