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 <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.
This commit is contained in:
parent
384aa89025
commit
abcde0a658
@ -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;
|
||||
|
||||
|
15
gcc/testsuite/gfortran.dg/dependency_59.f90
Normal file
15
gcc/testsuite/gfortran.dg/dependency_59.f90
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user