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-taskgroup-unrelated.c
Go to the documentation of this file.
1
/*
2
* task-taskgroup-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 "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;
23
24
#pragma omp parallel num_threads(8) shared(var, a)
25
#pragma omp master
26
{
27
#pragma omp task shared(var, a)
28
{
29
var++;
30
OMPT_SIGNAL
(
a
);
31
// Give master thread time to execute the task in the taskgroup.
32
OMPT_WAIT
(
a
, 2);
33
}
34
35
#pragma omp taskgroup
36
{
37
#pragma omp task if (0)
38
{
39
// Dummy task.
40
}
41
42
// Give other threads time to steal the tasks.
43
OMPT_WAIT
(
a
, 1);
44
OMPT_SIGNAL
(
a
);
45
}
46
47
var++;
48
}
49
50
int
error = (var != 2);
51
fprintf(stderr,
"DONE\n"
);
52
return
error;
53
}
54
55
// CHECK: WARNING: ThreadSanitizer: data race
56
// CHECK-NEXT: {{(Write|Read)}} of size 4
57
// CHECK-NEXT: #0 {{.*}}task-taskgroup-unrelated.c:47
58
// CHECK: Previous write of size 4
59
// CHECK-NEXT: #0 {{.*}}task-taskgroup-unrelated.c:29
60
// CHECK: DONE
61
// CHECK: ThreadSanitizer: reported 1 warnings
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 Wed Jun 18 2025 02:28:09 for LLVM OpenMP by
1.9.6