You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.5 KiB
71 lines
1.5 KiB
7 months ago
|
! RUN: %f18 -fdebug-pre-fir-tree -fparse-only %s | FileCheck %s
|
||
|
|
||
|
! Test Pre-FIR Tree captures all the coarray related statements
|
||
|
|
||
|
! CHECK: Subroutine test_coarray
|
||
|
Subroutine test_coarray
|
||
|
use iso_fortran_env, only: team_type, event_type, lock_type
|
||
|
type(team_type) :: t
|
||
|
type(event_type) :: done
|
||
|
type(lock_type) :: alock
|
||
|
real :: y[10,*]
|
||
|
integer :: counter[*]
|
||
|
logical :: is_master
|
||
|
! CHECK: <<ChangeTeamConstruct>>
|
||
|
change team(t, x[5,*] => y)
|
||
|
! CHECK: AssignmentStmt
|
||
|
x = x[4, 1]
|
||
|
end team
|
||
|
! CHECK: <<End ChangeTeamConstruct>>
|
||
|
! CHECK: FormTeamStmt
|
||
|
form team(1, t)
|
||
|
|
||
|
! CHECK: <<IfConstruct>>
|
||
|
if (this_image() == 1) then
|
||
|
! CHECK: EventPostStmt
|
||
|
event post (done)
|
||
|
else
|
||
|
! CHECK: EventWaitStmt
|
||
|
event wait (done)
|
||
|
end if
|
||
|
! CHECK: <<End IfConstruct>>
|
||
|
|
||
|
! CHECK: <<CriticalConstruct>>
|
||
|
critical
|
||
|
! CHECK: AssignmentStmt
|
||
|
counter[1] = counter[1] + 1
|
||
|
end critical
|
||
|
! CHECK: <<End CriticalConstruct>>
|
||
|
|
||
|
! CHECK: LockStmt
|
||
|
lock(alock)
|
||
|
! CHECK: PrintStmt
|
||
|
print *, "I have the lock"
|
||
|
! CHECK: UnlockStmt
|
||
|
unlock(alock)
|
||
|
|
||
|
! CHECK: SyncAllStmt
|
||
|
sync all
|
||
|
! CHECK: SyncMemoryStmt
|
||
|
sync memory
|
||
|
! CHECK: SyncTeamStmt
|
||
|
sync team(t)
|
||
|
|
||
|
! CHECK: <<IfConstruct>>
|
||
|
if (this_image() == 1) then
|
||
|
! CHECK: SyncImagesStmt
|
||
|
sync images(*)
|
||
|
else
|
||
|
! CHECK: SyncImagesStmt
|
||
|
sync images(1)
|
||
|
end if
|
||
|
! CHECK: <<End IfConstruct>>
|
||
|
|
||
|
! CHECK: <<IfConstruct>>
|
||
|
if (y<0.) then
|
||
|
! CHECK: FailImageStmt
|
||
|
fail image
|
||
|
end if
|
||
|
! CHECK: <<End IfConstruct>>
|
||
|
end
|