| ! REQUIRES: plugins, examples, shell |
| |
| ! RUN: %flang_fc1 -load %llvmshlibdir/flangOmpReport.so -plugin flang-omp-report -fopenmp %s -o - | FileCheck %s |
| |
| ! Check OpenMP 2.13.6 atomic Construct |
| |
| a = 1.0 |
| !$omp parallel num_threads(4) shared(a) |
| !$omp atomic seq_cst, read |
| b = a |
| |
| !$omp atomic seq_cst write |
| a = b |
| !$omp end atomic |
| |
| !$omp atomic capture seq_cst |
| b = a |
| a = a + 1 |
| !$omp end atomic |
| |
| !$omp atomic |
| a = a + 1 |
| !$omp end parallel |
| end |
| |
| ! CHECK:--- |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-atomic.f90' |
| ! CHECK-NEXT: line: 9 |
| ! CHECK-NEXT: construct: atomic-read |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: seq_cst |
| ! CHECK-NEXT: details: '' |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-atomic.f90' |
| ! CHECK-NEXT: line: 12 |
| ! CHECK-NEXT: construct: atomic-write |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: seq_cst |
| ! CHECK-NEXT: details: '' |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-atomic.f90' |
| ! CHECK-NEXT: line: 16 |
| ! CHECK-NEXT: construct: atomic-capture |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: seq_cst |
| ! CHECK-NEXT: details: '' |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-atomic.f90' |
| ! CHECK-NEXT: line: 21 |
| ! CHECK-NEXT: construct: atomic-atomic |
| ! CHECK-NEXT: clauses: [] |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-atomic.f90' |
| ! CHECK-NEXT: line: 8 |
| ! CHECK-NEXT: construct: parallel |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: num_threads |
| ! CHECK-NEXT: details: '4' |
| ! CHECK-NEXT: - clause: shared |
| ! CHECK-NEXT: details: a |
| ! CHECK-NEXT:... |