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:
parent
e99b25df68
commit
8a6a62614a
37
gcc/testsuite/gfortran.dg/module_variable_3.f90
Normal file
37
gcc/testsuite/gfortran.dg/module_variable_3.f90
Normal 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" } }
|
@ -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))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user