source: CIVL/examples/omp/dataracebench-1.3.2/micro-benchmarks-fortran/DRB169-workshare-orig-yes.f95@ cc8e265

1.23 2.0 acw/focus-triggers main test-branch
Last change on this file since cc8e265 was e3f356c, checked in by Wenhao Wu <wuwenhao@…>, 5 years ago

merge from branch omptrans for tacas2022

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@5471 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100755
File size: 1.1 KB
Line 
1!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!
2!!! Copyright (c) 2017-20, Lawrence Livermore National Security, LLC
3!!! and DataRaceBench project contributors. See the DataRaceBench/COPYRIGHT file for details.
4!!!
5!!! SPDX-License-Identifier: (BSD-3-Clause)
6!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!
7
8!The workshare construct is only available in Fortran. The workshare spreads work across the threads
9!executing the parallel. There is an implicit barrier. The nowait nullifies this barrier and hence
10!there is a race at line:29 due to nowait at line:26. Data Race Pairs, AA@25:9 and AA@29:!5.
11
12
13program DRB169_workshare_orig_yes
14 use omp_lib
15 implicit none
16
17 integer :: AA, BB, CC, res
18
19 BB = 1
20 CC = 2
21
22 !$omp parallel
23 !$omp workshare
24 AA = BB
25 AA = AA+CC
26 !$omp end workshare nowait
27
28 !$omp workshare
29 res = AA*2
30 !$omp end workshare
31 !$omp end parallel
32
33 if (res /= 6) then
34 print*,res
35 end if
36end program
Note: See TracBrowser for help on using the repository browser.