[flang-commits] [flang] d1440cc - [flang] expand the this_image test coverage
Damian Rouson via flang-commits
flang-commits at lists.llvm.org
Thu May 26 16:36:45 PDT 2022
Author: Damian Rouson
Date: 2022-05-26T16:36:20-07:00
New Revision: d1440ccaa5bce1726da283759e95ef99a25d4276
URL: https://github.com/llvm/llvm-project/commit/d1440ccaa5bce1726da283759e95ef99a25d4276
DIFF: https://github.com/llvm/llvm-project/commit/d1440ccaa5bce1726da283759e95ef99a25d4276.diff
LOG: [flang] expand the this_image test coverage
Add a test with a range of this_image() intrinsic function
invocations, including a comprehensive set of standard-conforming
keyword and non-keyword arguments with and without optional
arguments present and with argument positions covering all
possible orderings. Also test that several non-conforming
this_image() invocations generate the correct error messages.
Differential Revision: https://reviews.llvm.org/D123331
Added:
flang/test/Semantics/this_image01.f90
flang/test/Semantics/this_image02.f90
Modified:
Removed:
flang/test/Semantics/this_image.f90
################################################################################
diff --git a/flang/test/Semantics/this_image.f90 b/flang/test/Semantics/this_image01.f90
similarity index 100%
rename from flang/test/Semantics/this_image.f90
rename to flang/test/Semantics/this_image01.f90
diff --git a/flang/test/Semantics/this_image02.f90 b/flang/test/Semantics/this_image02.f90
new file mode 100644
index 0000000000000..b5871c3d4b727
--- /dev/null
+++ b/flang/test/Semantics/this_image02.f90
@@ -0,0 +1,128 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! XFAIL: *
+! Check for semantic errors in this_image() function calls
+
+program this_image_tests
+ use iso_fortran_env, only : team_type
+ implicit none
+
+ !ERROR: Coarray 'team_coarray' may not have type TEAM_TYPE, C_PTR, or C_FUNPTR
+ type(team_type) team_coarray[*]
+ type(team_type) home, league(2)
+ integer n, i, array(1), non_coarray(1), co_array[*]
+ integer, allocatable :: images(:)
+ logical non_integer
+
+ !___ standard-conforming statement with no optional arguments present ___
+ n = this_image()
+
+ !___ standard-conforming statements with team argument present ___
+ n = this_image(home)
+ n = this_image(team=home)
+ n = this_image(league(1))
+
+ !___ standard-conforming statements with coarray argument present ___
+ images = this_image(co_array)
+ images = this_image(coarray=co_array)
+
+ !___ standard-conforming statements with coarray and team arguments present ___
+ images = this_image(co_array, home)
+ images = this_image(co_array, team=home)
+ images = this_image(team_coarray, team=home)
+ images = this_image(team_coarray[1], team=home)
+ images = this_image(coarray=co_array, team=home)
+ images = this_image(team=home, coarray=co_array)
+
+ !___ standard-conforming statements with coarray and dim arguments present ___
+ n = this_image(co_array, i)
+ n = this_image(co_array, dim=i)
+ n = this_image(coarray=co_array, dim=i)
+ n = this_image(dim=i, coarray=co_array)
+
+ !___ standard-conforming statements with all arguments present ___
+ n = this_image(co_array, i, home)
+ n = this_image(co_array, i, team=home)
+ n = this_image(co_array, dim=i, team=home)
+ n = this_image(co_array, team=home, dim=i)
+
+ n = this_image(coarray=co_array, dim=i, team=home)
+ n = this_image(coarray=co_array, team=home, dim=i)
+
+ n = this_image(dim=i, coarray=co_array, team=home)
+ n = this_image(dim=i, team=home, coarray=co_array)
+
+ n = this_image(team=home, dim=i, coarray=co_array)
+ n = this_image(team=home, coarray=co_array, dim=i)
+
+ !___ non-conforming statements ___
+
+ !ERROR: TBD
+ n = this_image(co_array)
+
+ !ERROR: missing mandatory 'dim=' argument
+ n = this_image(i)
+
+ !ERROR: missing mandatory 'coarray=' argument
+ n = this_image(dim=i)
+
+ !ERROR: Actual argument for 'dim=' has bad type 'team_type'
+ n = this_image(i, home)
+
+ !ERROR: missing mandatory 'dim=' argument
+ n = this_image(i, team=home)
+
+ !ERROR: TBD
+ n = this_image(coarray=co_array, dim=2)
+
+ !ERROR: missing mandatory 'coarray=' argument
+ n = this_image(dim=i, team=home)
+
+ !ERROR: missing mandatory 'coarray=' argument
+ n = this_image(team=home, dim=i)
+
+ ! Doesn't produce an error
+ n = this_image(coarray=co_array, i)
+
+ !ERROR: No explicit type declared for 'team'
+ images = this_image(coarray=co_array, team)
+
+ ! non-scalar team_type argument
+ !ERROR: missing mandatory 'coarray=' argument
+ n = this_image(team=league)
+
+ ! incorrectly typed argument
+ !ERROR: missing mandatory 'dim=' argument
+ n = this_image(3.4)
+
+ !ERROR: too many actual arguments for intrinsic 'this_image'
+ n = this_image(co_array, i, home, 0)
+
+ ! keyword argument with incorrect type
+ !ERROR: missing mandatory 'dim=' argument
+ images = this_image(coarray=non_coarray)
+
+ ! incorrect keyword argument name but valid type (type number)
+ !ERROR: unknown keyword argument to intrinsic 'this_image'
+ images = this_image(co_array=co_array)
+
+ ! incorrect keyword argument name but valid type (team_type)
+ !ERROR: unknown keyword argument to intrinsic 'this_image'
+ n = this_image(my_team=home)
+
+ ! correct keyword argument name but mismatched type
+ !ERROR: Actual argument for 'team=' has bad type 'INTEGER(4)'
+ n = this_image(co_array, i, team=-1)
+
+ !ERROR: 'dim=' argument has unacceptable rank 1
+ n = this_image(co_array, array )
+
+ !ERROR: unknown keyword argument to intrinsic 'this_image'
+ n = this_image(co_array, dims=i)
+
+ !ERROR: Actual argument for 'dim=' has bad type 'LOGICAL(4)'
+ n = this_image(co_array, non_integer)
+
+ ! A this_image reference with a coarray argument of team type shall also have a team argument
+ ! Doesn't produce an error
+ images = this_image(team_coarray)
+end program this_image_tests
More information about the flang-commits
mailing list