| ! RUN: %flang_fc1 -fsyntax-only -fdebug-pre-fir-tree %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 |