1! Check the flang-omp-report plugin for omp-declarative-directive.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 declarative directives
8
9! 2.8.2 declare-simd
10
11subroutine declare_simd_1(a, b)
12  real(8), intent(inout) :: a, b
13  !$omp declare simd(declare_simd_1) aligned(a)
14  a = 3.14 + b
15end subroutine declare_simd_1
16
17! 2.10.6 declare-target
18! 2.15.2 threadprivate
19
20module m2
21contains
22  subroutine foo
23    !$omp declare target
24    integer, parameter :: N=10000, M=1024
25    integer :: i
26    real :: Q(N, N), R(N,M), S(M,M)
27  end subroutine foo
28end module m2
29
30end
31
32! CHECK:---
33! CHECK-NEXT:- file:            '{{[^"]*}}omp-declarative-directive.f90'
34! CHECK-NEXT:  line:            13
35! CHECK-NEXT:  construct:       declare simd
36! CHECK-NEXT:  clauses:
37! CHECK-NEXT:    - clause:      aligned
38! CHECK-NEXT:      details:     a
39! CHECK-NEXT:- file:            '{{[^"]*}}omp-declarative-directive.f90'
40! CHECK-NEXT:  line:            23
41! CHECK-NEXT:  construct:       declare target
42! CHECK-NEXT:  clauses:         []
43! CHECK-NEXT:...
44