xref: /llvm-project/flang/test/Examples/omp-atomic.f90 (revision 0a95abb7dcf3ae4d4c5bb7ecc739c217d20b7fc3)
1! REQUIRES: plugins, examples, shell
2
3! RUN: %flang_fc1 -load %llvmshlibdir/flangOmpReport.so -plugin flang-omp-report -fopenmp %s -o - | FileCheck %s
4
5! Check OpenMP 2.13.6 atomic Construct
6
7  a = 1.0
8  !$omp parallel num_threads(4) shared(a)
9  !$omp atomic seq_cst, read
10  b = a
11
12  !$omp atomic seq_cst write
13  a = b
14  !$omp end atomic
15
16  !$omp atomic capture seq_cst
17  b = a
18  a = a + 1
19  !$omp end atomic
20
21  !$omp atomic
22  a = a + 1
23  !$omp end parallel
24end
25
26! CHECK:---
27! CHECK-NEXT:- file:            '{{[^"]*}}omp-atomic.f90'
28! CHECK-NEXT:  line:            9
29! CHECK-NEXT:  construct:       atomic-read
30! CHECK-NEXT:  clauses:
31! CHECK-NEXT:    - clause:      seq_cst
32! CHECK-NEXT:      details:     ''
33! CHECK-NEXT:- file:            '{{[^"]*}}omp-atomic.f90'
34! CHECK-NEXT:  line:            12
35! CHECK-NEXT:  construct:       atomic-write
36! CHECK-NEXT:  clauses:
37! CHECK-NEXT:    - clause:      seq_cst
38! CHECK-NEXT:      details:     ''
39! CHECK-NEXT:- file:            '{{[^"]*}}omp-atomic.f90'
40! CHECK-NEXT:  line:            16
41! CHECK-NEXT:  construct:       atomic-capture
42! CHECK-NEXT:  clauses:
43! CHECK-NEXT:    - clause:      seq_cst
44! CHECK-NEXT:      details:     ''
45! CHECK-NEXT:- file:            '{{[^"]*}}omp-atomic.f90'
46! CHECK-NEXT:  line:            21
47! CHECK-NEXT:  construct:       atomic-atomic
48! CHECK-NEXT:  clauses:         []
49! CHECK-NEXT:- file:            '{{[^"]*}}omp-atomic.f90'
50! CHECK-NEXT:  line:            8
51! CHECK-NEXT:  construct:       parallel
52! CHECK-NEXT:  clauses:
53! CHECK-NEXT:    - clause:      num_threads
54! CHECK-NEXT:      details:     '4'
55! CHECK-NEXT:    - clause:      shared
56! CHECK-NEXT:      details:     a
57! CHECK-NEXT:...
58