xref: /llvm-project/flang/test/Semantics/doconcurrent02.f90 (revision 96d229c9abdfb2836e18a554bfb63b5d52aeebfa)
1! when the loops are not DO CONCURRENT
2
3! RUN: not %flang_fc1 -fdebug-unparse-with-symbols %s 2>&1 | FileCheck %s
4! CHECK-NOT: image control statement not allowed in DO CONCURRENT
5! CHECK-NOT: RETURN not allowed in DO CONCURRENT
6! CHECK-NOT: call to impure procedure in DO CONCURRENT not allowed
7! CHECK-NOT: IEEE_GET_FLAG not allowed in DO CONCURRENT
8! CHECK-NOT: ADVANCE specifier not allowed in DO CONCURRENT
9! CHECK-NOT: SYNC ALL
10! CHECK-NOT: SYNC IMAGES
11
12module ieee_exceptions
13  interface
14     subroutine ieee_get_flag(i, j)
15       integer :: i, j
16     end subroutine ieee_get_flag
17  end interface
18end module ieee_exceptions
19
20subroutine do_concurrent_test1(i,n)
21  implicit none
22  integer :: i, n
23  do 10 i = 1,n
24     SYNC ALL
25     SYNC IMAGES (*)
26     return
2710 continue
28end subroutine do_concurrent_test1
29
30subroutine do_concurrent_test2(i,j,n,flag)
31  use ieee_exceptions
32  implicit none
33  integer :: i, j, n, flag, flag2
34  do i = 1,n
35    change team (j)
36      call ieee_get_flag(flag, flag2)
37    end team
38    write(*,'(a35)',advance='no')
39  end do
40end subroutine do_concurrent_test2
41