diff options
author | Tobias Burnus <tobias@codesourcery.com> | 2021-09-26 19:26:01 +0200 |
---|---|---|
committer | Tobias Burnus <tobias@codesourcery.com> | 2021-09-26 19:26:01 +0200 |
commit | fe2771b291c2c7c0ac37b75ec5b160937524b60c (patch) | |
tree | 7e067547374db3f7fc794ba76902bd17d056b930 /libgfortran/intrinsics | |
parent | e98e12c40bf3b2d37c3d9acb914fef495c704da5 (diff) | |
download | gcc-fe2771b291c2c7c0ac37b75ec5b160937524b60c.zip gcc-fe2771b291c2c7c0ac37b75ec5b160937524b60c.tar.gz gcc-fe2771b291c2c7c0ac37b75ec5b160937524b60c.tar.bz2 |
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.
Diffstat (limited to 'libgfortran/intrinsics')
-rw-r--r-- | libgfortran/intrinsics/associated.c | 3 |
1 files changed, 2 insertions, 1 deletions
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; |