xref: /llvm-project/flang/test/Parser/acc-unparse.f90 (revision f4c5c470cdd6962550cfbdd41318b3a63a9d3747)
1! RUN: %flang_fc1 -fopenacc -fdebug-unparse %s | FileCheck %s
2
3! Test unparse does not crash with OpenACC directives.
4
5! Test bug 47659
6program bug47659
7  integer :: i, j
8  label1: do i = 1, 10
9    !$acc parallel loop
10    do j = 1, 10
11      if (j == 2) then
12        stop 1
13      end if
14    end do
15  end do label1
16end program
17
18!CHECK-LABEL: PROGRAM bug47659
19!CHECK: !$ACC PARALLEL LOOP
20
21
22subroutine acc_loop()
23  integer :: i, j
24  real :: a(10)
25  integer :: gangNum, gangDim, gangStatic
26
27!CHECK-LABEL: SUBROUTINE acc_loop
28
29  !$acc loop collapse(force: 2)
30  do i = 1, 10
31    do j = 1, 10
32    end do
33  end do
34!CHECK: !$ACC LOOP COLLAPSE(FORCE:2_4)
35
36  !$acc loop gang
37  do i = 1, 10
38    a(i) = i
39  end do
40! CHECK: !$ACC LOOP GANG
41
42  !$acc loop gang(gangNum)
43  do i = 1, 10
44    a(i) = i
45  end do
46! CHECK: !$ACC LOOP GANG(NUM:gangnum)
47
48  !$acc loop gang(num: gangNum)
49  do i = 1, 10
50    a(i) = i
51  end do
52! CHECK: !$ACC LOOP GANG(NUM:gangnum)
53
54  !$acc loop gang(dim: gangDim)
55  do i = 1, 10
56    a(i) = i
57  end do
58! CHECK: !$ACC LOOP GANG(DIM:gangdim)
59
60  !$acc loop gang(static:gangStatic)
61  do i = 1, 10
62    a(i) = i
63  end do
64! CHECK: !$ACC LOOP GANG(STATIC:gangstatic)
65
66  !$acc loop gang(static:*)
67  do i = 1, 10
68    a(i) = i
69  end do
70! CHECK: !$ACC LOOP GANG(STATIC:*)
71
72  !$acc loop gang(static:gangStatic, dim: gangDim)
73  do i = 1, 10
74    a(i) = i
75  end do
76! CHECK: !$ACC LOOP GANG(STATIC:gangstatic,DIM:gangdim)
77
78end subroutine
79
80subroutine routine1()
81  !$acc routine bind("routine1_")
82! CHECK: !$ACC ROUTINE BIND("routine1_")
83end subroutine
84
85subroutine routine2()
86  !$acc routine(routine2) bind(routine2)
87! CHECK: !$ACC ROUTINE(routine2) BIND(routine2)
88end subroutine
89