[flang-commits] [flang] 5e7c689 - [flang] Write semantics tests for the FORM TEAM statement.

Katherine Rasmussen via flang-commits flang-commits at lists.llvm.org
Mon Oct 3 11:47:35 PDT 2022


Author: Hussain Kadhem
Date: 2022-10-03T11:46:48-07:00
New Revision: 5e7c6894408e18ad34c3f9da01ff018ce42ddc23

URL: https://github.com/llvm/llvm-project/commit/5e7c6894408e18ad34c3f9da01ff018ce42ddc23
DIFF: https://github.com/llvm/llvm-project/commit/5e7c6894408e18ad34c3f9da01ff018ce42ddc23.diff

LOG: [flang] Write semantics tests for the FORM TEAM statement.

Reviewed By: ktras

Differential Revision: https://reviews.llvm.org/D134205

Added: 
    flang/test/Semantics/form_team01.f90
    flang/test/Semantics/form_team01a.f90
    flang/test/Semantics/form_team01b.f90

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/flang/test/Semantics/form_team01.f90 b/flang/test/Semantics/form_team01.f90
new file mode 100644
index 0000000000000..3b82e5b41666e
--- /dev/null
+++ b/flang/test/Semantics/form_team01.f90
@@ -0,0 +1,67 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! Check for semantic errors in form team statements
+
+subroutine test
+  use, intrinsic :: iso_fortran_env, only: team_type
+  type(team_type) :: team
+  integer :: team_number
+  integer :: team_index
+  integer :: statvar
+  character(len=50) :: errvar
+  integer, codimension[*] :: co_team_number
+  integer, codimension[*] :: co_team_index
+  type(team_type), dimension(1) :: array_team
+  integer, dimension(1) :: array_team_number
+  integer, dimension(1) :: array_team_index
+  integer, dimension(1) :: array_statvar
+  character(len=50), dimension(1) :: array_errvar
+
+  logical :: invalid_argument
+
+  ! Valid invocations which should produce no errors.
+  FORM TEAM (team_number, team)
+  ! One form-team-spec argument.
+  FORM TEAM (team_number, team, NEW_INDEX=team_index)
+  FORM TEAM (team_number, team, STAT=statvar)
+  FORM TEAM (team_number, team, ERRMSG=errvar)
+  ! Two form-team-spec arguments in any order.
+  FORM TEAM (team_number, team, NEW_INDEX=team_index, STAT=statvar)
+  FORM TEAM (team_number, team, STAT=statvar, NEW_INDEX=team_index)
+  FORM TEAM (team_number, team, NEW_INDEX=team_index, ERRMSG=errvar)
+  FORM TEAM (team_number, team, ERRMSG=errvar, NEW_INDEX=team_index)
+  FORM TEAM (team_number, team, STAT=statvar, ERRMSG=errvar)
+  FORM TEAM (team_number, team, ERRMSG=errvar, STAT=statvar)
+! Three form-team-spec arguments in any order.
+  FORM TEAM (team_number, team, NEW_INDEX=team_index, STAT=statvar, ERRMSG=errvar) ! identity
+  FORM TEAM (team_number, team, STAT=statvar, NEW_INDEX=team_index, ERRMSG=errvar) ! transposition (1,2)
+  FORM TEAM (team_number, team, ERRMSG=errvar, STAT=statvar, NEW_INDEX=team_index) ! transposition (1,3)
+  FORM TEAM (team_number, team, NEW_INDEX=team_index, ERRMSG=errvar, STAT=statvar) ! transposition (2,3)
+  FORM TEAM (team_number, team, ERRMSG=errvar, NEW_INDEX=team_index, STAT=statvar) ! cycle (1,2,3)
+  FORM TEAM (team_number, team, STAT=statvar, ERRMSG=errvar, NEW_INDEX=team_index) ! cycle (1,3,2)
+  ! It is semantically legal for team_index to be coindexed.
+  FORM TEAM (team_number, team, NEW_INDEX=co_team_index[this_image()])
+
+  ! Semantically invalid invocations.
+  !ERROR: Must have INTEGER type, but is LOGICAL(4)
+  FORM TEAM (invalid_argument, team)
+  !ERROR: Must have INTEGER type, but is REAL(4)
+  FORM TEAM (0.0, team)
+  !ERROR: Must have INTEGER type, but is LOGICAL(4)
+  FORM TEAM (team_number, team, NEW_INDEX=invalid_argument)
+  !ERROR: Must have INTEGER type, but is LOGICAL(4)
+  FORM TEAM (team_number, team, STAT=invalid_argument)
+  !ERROR: Must have CHARACTER type, but is LOGICAL(4)
+  FORM TEAM (team_number, team, ERRMSG=invalid_argument)
+
+  ! Arguments with rank mismatches.
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  FORM TEAM (array_team_number, team)
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  FORM TEAM (team_number, array_team)
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  FORM TEAM (team_number, team, NEW_INDEX=array_team_index)
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  FORM TEAM (team_number, team, STAT=array_statvar)
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  FORM TEAM (team_number, team, ERRMSG=array_errvar)
+end subroutine

diff  --git a/flang/test/Semantics/form_team01a.f90 b/flang/test/Semantics/form_team01a.f90
new file mode 100644
index 0000000000000..4dd60305305a9
--- /dev/null
+++ b/flang/test/Semantics/form_team01a.f90
@@ -0,0 +1,17 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! Check for semantic errors in form team statements
+! This subtest contains syntactic tests that prevent the main tests from being emitted.
+
+subroutine test
+  use, intrinsic :: iso_fortran_env, only: team_type
+  type(team_type) :: team
+  integer :: team_number
+
+  ! Syntactically invalid invocations.
+  !ERROR: expected '('
+  FORM TEAM (team_number, 0)
+  !ERROR: expected '('
+  FORM TEAM (team_number, team, STAT=0)
+  !ERROR: expected '('
+  FORM TEAM (team_number, team, ERRMSG='')
+end subroutine

diff  --git a/flang/test/Semantics/form_team01b.f90 b/flang/test/Semantics/form_team01b.f90
new file mode 100644
index 0000000000000..ba14240c64e69
--- /dev/null
+++ b/flang/test/Semantics/form_team01b.f90
@@ -0,0 +1,21 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! XFAIL: *
+! Check for semantic errors in form team statements
+! This subtest contains tests for unimplemented errors.
+
+subroutine test
+  use, intrinsic :: iso_fortran_env, only: team_type
+  type(team_type) :: team
+  integer :: team_number
+  integer, codimension[*] :: co_statvar
+  character(len=50), codimension[*] :: co_errvar
+
+  ! Semantically invalid invocations.
+  ! argument 'stat' shall not be a coindexed object
+  !ERROR: to be determined
+  FORM TEAM (team_number, team, STAT=co_statvar[this_image()])
+  ! argument 'errmsg' shall not be a coindexed object
+  !ERROR: to be determined
+  FORM TEAM (team_number, team, ERRMSG=co_errvar[this_image()])
+
+end subroutine


        


More information about the flang-commits mailing list