[flang][openacc] Use OpenACC terminator instead of fir.unreachable after Stop stmt...
[llvm-project.git] / flang / test / Lower / pre-fir-tree04.f90
blobe5f80424585421148b59438d33d9c6c0e9cb6670
1 ! RUN: %flang_fc1 -fdebug-pre-fir-tree %s | FileCheck %s
3 ! Test Pre-FIR Tree captures all the coarray related statements
5 ! CHECK: Subroutine test_coarray
6 Subroutine test_coarray
7 use iso_fortran_env, only: team_type, event_type, lock_type
8 type(team_type) :: t
9 type(event_type) :: done[*]
10 type(lock_type) :: alock[*]
11 real :: y[10,*]
12 integer :: counter[*]
13 logical :: is_square
14 ! CHECK: <<ChangeTeamConstruct>>
15 change team(t, x[5,*] => y)
16 ! CHECK: AssignmentStmt
17 x = x[4, 1]
18 end team
19 ! CHECK: <<End ChangeTeamConstruct>>
20 ! CHECK: FormTeamStmt
21 form team(1, t)
23 ! CHECK: <<IfConstruct>>
24 if (this_image() == 1) then
25 ! CHECK: EventPostStmt
26 event post (done)
27 else
28 ! CHECK: EventWaitStmt
29 event wait (done)
30 end if
31 ! CHECK: <<End IfConstruct>>
33 ! CHECK: <<CriticalConstruct>>
34 critical
35 ! CHECK: AssignmentStmt
36 counter[1] = counter[1] + 1
37 end critical
38 ! CHECK: <<End CriticalConstruct>>
40 ! CHECK: LockStmt
41 lock(alock)
42 ! CHECK: PrintStmt
43 print *, "I have the lock"
44 ! CHECK: UnlockStmt
45 unlock(alock)
47 ! CHECK: SyncAllStmt
48 sync all
49 ! CHECK: SyncMemoryStmt
50 sync memory
51 ! CHECK: SyncTeamStmt
52 sync team(t)
54 ! CHECK: <<IfConstruct>>
55 if (this_image() == 1) then
56 ! CHECK: SyncImagesStmt
57 sync images(*)
58 else
59 ! CHECK: SyncImagesStmt
60 sync images(1)
61 end if
62 ! CHECK: <<End IfConstruct>>
64 ! CHECK: <<IfConstruct!>>
65 if (y<0.) then
66 ! CHECK: FailImageStmt
67 fail image
68 end if
69 ! CHECK: <<End IfConstruct!>>
70 end