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