PR fortran/89574 - ICE in conv_function_val, at fortran/trans-expr.c:3792
When checking for an external procedure from the same file, do not consider symbols from different modules. gcc/fortran/ PR fortran/89574 * trans-decl.c (gfc_get_extern_function_decl): Check whether a symbol belongs to a different module.
This commit is contained in:
parent
02363d5fdb
commit
28f2a080cc
|
@ -2090,12 +2090,17 @@ gfc_get_extern_function_decl (gfc_symbol * sym, gfc_actual_arglist *actual_args)
|
|||
if (gsym && !gsym->bind_c)
|
||||
gsym = NULL;
|
||||
}
|
||||
else
|
||||
else if (sym->module == NULL)
|
||||
{
|
||||
gsym = gfc_find_gsymbol (gfc_gsym_root, sym->name);
|
||||
if (gsym && gsym->bind_c)
|
||||
gsym = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Procedure from a different module. */
|
||||
gsym = NULL;
|
||||
}
|
||||
|
||||
if (gsym && !gsym->defined)
|
||||
gsym = NULL;
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
! { dg-do compile }
|
||||
! PR fortran/89574 - ICE in conv_function_val, at fortran/trans-expr.c:3792
|
||||
|
||||
module mod1
|
||||
contains
|
||||
subroutine init
|
||||
end subroutine
|
||||
end module
|
||||
|
||||
module mod2
|
||||
contains
|
||||
subroutine init
|
||||
end subroutine
|
||||
end module
|
||||
|
||||
module init
|
||||
use mod1, only : test_init1 => init
|
||||
use mod2, only : test_init2 => init
|
||||
implicit none
|
||||
contains
|
||||
subroutine sub
|
||||
call test_init1
|
||||
call test_init2
|
||||
call init
|
||||
contains
|
||||
subroutine init
|
||||
end subroutine
|
||||
end subroutine
|
||||
end module
|
Loading…
Reference in New Issue