[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