From fe2771b291c2c7c0ac37b75ec5b160937524b60c Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Sun, 26 Sep 2021 19:26:01 +0200 Subject: Fortran: Fix associated intrinsic with assumed rank [PR101334] ASSOCIATE (ptr, tgt) takes as first argument also an assumed-rank array; however, using it together with a tgt (required to be non assumed rank) had issues for both scalar and nonscalar tgt. PR fortran/101334 gcc/fortran/ChangeLog: * trans-intrinsic.c (gfc_conv_associated): Support assumed-rank 'pointer' with scalar/array 'target' argument. libgfortran/ChangeLog: * intrinsics/associated.c (associated): Also check for same rank. gcc/testsuite/ChangeLog: * gfortran.dg/associated_assumed_rank.f90: New test. --- libgfortran/intrinsics/associated.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'libgfortran/intrinsics/associated.c') diff --git a/libgfortran/intrinsics/associated.c b/libgfortran/intrinsics/associated.c index 943fc69..60c88ff 100644 --- a/libgfortran/intrinsics/associated.c +++ b/libgfortran/intrinsics/associated.c @@ -41,8 +41,9 @@ associated (const gfc_array_void *pointer, const gfc_array_void *target) return 0; if (GFC_DESCRIPTOR_DTYPE (pointer).type != GFC_DESCRIPTOR_DTYPE (target).type) return 0; - rank = GFC_DESCRIPTOR_RANK (pointer); + if (rank != GFC_DESCRIPTOR_RANK (target)) + return 0; for (n = 0; n < rank; n++) { long extent; -- cgit v1.1