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 <tkoenig@gcc.gnu.org>
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 <tkoenig@gcc.gnu.org>
PR fortran/95812
* gfortran.dg/dependency_59.f90: New test.
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;
--- /dev/null
+! { 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