tree-nested: Update assert for Fortran module vars [PR97927]

gcc/ChangeLog:

	PR fortran/97927
	* tree-nested.c (convert_local_reference_stmt): Avoid calling
	lookup_field_for_decl for Fortran module (= namespace context).

gcc/testsuite/ChangeLog:

	PR fortran/97927
	* gfortran.dg/module_variable_3.f90: New test.
This commit is contained in:
Tobias Burnus 2021-03-08 13:05:48 +01:00
parent e99b25df68
commit 8a6a62614a
2 changed files with 38 additions and 0 deletions

View File

@ -0,0 +1,37 @@
! { dg-do compile }
! { dg-additional-options "-fdump-tree-original" }
!
! PR fortran/97927
!
! Did ICE due to the in tree-nested.c due to {clobber}
!
module mpi2
interface
subroutine MPI_Allreduce(i)
implicit none
INTEGER, OPTIONAL, INTENT(OUT) :: i
end subroutine MPI_Allreduce
end interface
end module
module modmpi
implicit none
integer ierror ! module variable = context NAMESPACE_DECL
end module
subroutine exxengy
use modmpi
use mpi2, only: mpi_allreduce
implicit none
! intent(out) implies: ierror = {clobber}
call mpi_allreduce(ierror)
contains
subroutine zrho2
return
end subroutine
end subroutine
! { dg-final { scan-tree-dump "ierror = {CLOBBER};" "original" } }

View File

@ -2526,6 +2526,7 @@ convert_local_reference_stmt (gimple_stmt_iterator *gsi, bool *handled_ops_p,
{
tree lhs = gimple_assign_lhs (stmt);
if (DECL_P (lhs)
&& decl_function_context (lhs) == info->context
&& !use_pointer_in_frame (lhs)
&& lookup_field_for_decl (info, lhs, NO_INSERT))
{