From: Thomas Koenig Date: Tue, 23 Jun 2020 06:14:51 +0000 (+0200) Subject: Handle AR_FULL vs. AR_FULL in dependency checking. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=abcde0a658e17dbbabcb396eaae5a3612e07d401;p=gcc.git Handle AR_FULL vs. AR_FULL in dependency checking. Previously, handling of full vs. full references failed to take AR_FULL vs. AR_FULL into account. A change in dependency checking in gcc 10 created a code path that could lead there; with this patch, this is now correctly handled. gcc/fortran/ChangeLog: 2020-06-23 Thomas Koenig PR fortran/95812 * dependency.c (ref_same_as_full_array): Handle case of AR_FULL vs. AR_FULL. gcc/testsuite/ChangeLog: 2020-06-23 Thomas Koenig PR fortran/95812 * gfortran.dg/dependency_59.f90: New test. --- diff --git a/gcc/fortran/dependency.c b/gcc/fortran/dependency.c index f6c68409e68..7edd5d9010d 100644 --- a/gcc/fortran/dependency.c +++ b/gcc/fortran/dependency.c @@ -2033,6 +2033,8 @@ ref_same_as_full_array (gfc_ref *full_ref, gfc_ref *ref) return false; if (ref->type != REF_ARRAY) return false; + if (ref->u.ar.type == AR_FULL) + return true; if (ref->u.ar.type != AR_SECTION) return false; diff --git a/gcc/testsuite/gfortran.dg/dependency_59.f90 b/gcc/testsuite/gfortran.dg/dependency_59.f90 new file mode 100644 index 00000000000..90c6532392c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/dependency_59.f90 @@ -0,0 +1,15 @@ +! { dg-do compile } +! PR 95812 - this caused an ICE. +! Test case by Jakub Jelinek. + +module test +contains + subroutine foo() + integer :: a(3) + a = 1 + print *, matmul(1*reshape(a,(/3,1/)), reshape((/1,1,1/),(/1,3/))) + end subroutine foo + subroutine bar() + call foo() + end subroutine bar +end module test