Hello world,

I have attached the patch below as obvious and simple (it is a
one-liner). The problem was a latent bug exposed by my recent
commit for PR 78865, where the check for subroutine entries
was done on the main symbol instead of the entry.  Provision
for doing this for the entry master were already in place,
I simply added the condition for the entry itself.

I will wait a week or so before committing to gcc-8, the only
other affected branch.

Regards

        Thomas

2019-04-06  Thomas Koenig  <tkoe...@gcc.gnu.org>

        PR fortran/89981
        * resolve.c (resolve_global_procedure): If the global symbol is an
        ENTRY, also look up its name among the entries.

2019-04-06  Thomas Koenig  <tkoe...@gcc.gnu.org>

        PR fortran/89981
        * gfortran.dg/entry_22.f90: New test.
Index: resolve.c
===================================================================
--- resolve.c	(Revision 269895)
+++ resolve.c	(Arbeitskopie)
@@ -2546,7 +2546,7 @@ resolve_global_procedure (gfc_symbol *sym, locus *
 	  if (gsym->binding_label && gsym->sym_name != def_sym->name)
 	    gfc_find_symbol (gsym->sym_name, gsym->ns, 0, &def_sym);
 
-	  if (def_sym->attr.entry_master)
+	  if (def_sym->attr.entry_master || def_sym->attr.entry)
 	    {
 	      gfc_entry_list *entry;
 	      for (entry = gsym->ns->entries; entry; entry = entry->next)
! { dg-do compile }
! { dg-additional-options "-pedantic" }
! PR fortran/89981 - this used to give a wrong warning (error with
! -pedantic)
program main
  call bar(i)
  call baz(i) ! { dg-error "Type mismatch in argument" }
end program main
subroutine foo(r)
  entry bar(i)
  entry baz(r)
end subroutine foo

Reply via email to