LLVM OpenMP
20.0.0git
Toggle main menu visibility
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
c
d
e
g
h
i
m
n
p
r
s
t
u
Functions
c
d
e
g
i
m
n
p
r
s
u
Variables
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
z
~
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
w
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
Typedefs
Enumerations
Enumerator
Related Functions
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
Typedefs
_
a
b
c
d
e
i
k
l
m
n
o
p
r
t
u
Enumerations
_
b
c
d
f
k
l
n
o
s
t
Enumerator
_
a
b
c
d
e
f
k
l
n
o
p
r
s
t
Macros
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
tools
archer
tests
races
task-dependency.c
Go to the documentation of this file.
1
/*
2
* task-dependency.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 "ompt/ompt-signal.h"
17
#include <omp.h>
18
#include <stdio.h>
19
#include <unistd.h>
20
21
int
main
(
int
argc,
char
*argv[]) {
22
int
var = 0,
a
= 0,
b
= 0;
23
24
#pragma omp parallel num_threads(8) shared(var, a)
25
#pragma omp master
26
{
27
#pragma omp task shared(var, a, b) depend(out : var)
28
{
29
OMPT_SIGNAL
(
a
);
30
var++;
31
OMPT_SIGNAL
(
b
);
32
}
33
34
#pragma omp task shared(a) depend(in : var)
35
{
36
OMPT_SIGNAL
(
a
);
37
OMPT_WAIT
(
a
, 3);
38
}
39
40
#pragma omp task shared(var, b)
// depend(in: var) is missing here!
41
{
42
OMPT_WAIT
(
b
, 1);
43
var++;
44
OMPT_SIGNAL
(
a
);
45
}
46
47
// Give other thread time to steal the task.
48
OMPT_WAIT
(
a
, 2);
49
}
50
51
int
error = (var != 2);
52
fprintf(stderr,
"DONE\n"
);
53
return
error;
54
}
55
56
// CHECK: WARNING: ThreadSanitizer: data race
57
// CHECK-NEXT: {{(Write|Read)}} of size 4
58
// CHECK-NEXT: #0 {{.*}}task-dependency.c:43
59
// CHECK: Previous write of size 4
60
// CHECK-NEXT: #0 {{.*}}task-dependency.c:30
61
// CHECK: DONE
62
// CHECK: ThreadSanitizer: reported 1 warnings
b
int b
Definition:
kmp_set_dispatch_buf.c:27
a
int a
Definition:
llvm-issue-80664.c:20
OMPT_WAIT
#define OMPT_WAIT(s, v)
Definition:
ompt-signal.h:20
OMPT_SIGNAL
#define OMPT_SIGNAL(s)
Definition:
ompt-signal.h:12
main
int main()
Definition:
test-touch.c:21
Generated on Fri Jun 13 2025 09:43:51 for LLVM OpenMP by
1.9.6