xref: /llvm-project/flang/test/Preprocessing/directive-contin-with-pp.F90 (revision 58f9c4fc0055821d88869aafd49e0424b1070a79)
1! RUN: %flang_fc1 -fdebug-unparse -fopenmp %s 2>&1 | FileCheck %s
2
3#define DIR_START !dir$
4#define DIR_CONT !dir$&
5#define FIRST(x) DIR_START x
6#define NEXT(x) DIR_CONT x
7#define AMPER &
8#define COMMENT !
9#define OMP_START !$omp
10#define OMP_CONT !$omp&
11
12module m
13 contains
14  subroutine s1(x1, x2, x3, x4, x5, x6, x7)
15
16!dir$ ignore_tkr x1
17
18!dir$ ignore_tkr &
19!dir$& x2
20
21DIR_START ignore_tkr x3
22
23!dir$ ignore_tkr AMPER
24DIR_CONT x4
25
26FIRST(ignore_tkr &)
27!dir$& x5
28
29FIRST(ignore_tkr &)
30NEXT(x6)
31
32COMMENT blah &
33COMMENT & more
34    stop 1
35
36OMP_START parallel &
37OMP_START do &
38OMP_START reduction(+:x)
39    do j1 = 1, n
40    end do
41
42OMP_START parallel &
43OMP_START & do &
44OMP_START & reduction(+:x)
45    do j2 = 1, n
46    end do
47
48OMP_START parallel &
49OMP_CONT do &
50OMP_CONT reduction(+:x)
51    do j3 = 1, n
52    end do
53  end
54
55COMMENT &
56  subroutine s2
57  end subroutine
58COMMENT&
59  subroutine s3
60  end subroutine
61end module
62
63!CHECK: MODULE m
64!CHECK: CONTAINS
65!CHECK:  SUBROUTINE s1 (x1, x2, x3, x4, x5, x6, x7)
66!CHECK:   !DIR$ IGNORE_TKR x1
67!CHECK:   !DIR$ IGNORE_TKR x2
68!CHECK:   !DIR$ IGNORE_TKR x3
69!CHECK:   !DIR$ IGNORE_TKR x4
70!CHECK:   !DIR$ IGNORE_TKR x5
71!CHECK:   !DIR$ IGNORE_TKR x6
72!CHECK:   STOP 1_4
73!CHECK: !$OMP PARALLEL DO  REDUCTION(+: x)
74!CHECK:   DO j1=1_4,n
75!CHECK:   END DO
76!CHECK: !$OMP PARALLEL DO  REDUCTION(+: x)
77!CHECK:   DO j2=1_4,n
78!CHECK:   END DO
79!CHECK: !$OMP PARALLEL DO  REDUCTION(+: x)
80!CHECK:   DO j3=1_4,n
81!CHECK:   END DO
82!CHECK:  END SUBROUTINE
83!CHECK:  SUBROUTINE s2
84!CHECK:  END SUBROUTINE
85!CHECK:  SUBROUTINE s3
86!CHECK:  END SUBROUTINE
87!CHECK: END MODULE
88