Am 15.03.19 um 21:31 schrieb Steve Kargl:
Patch is missing?
Entirely correct. Here it is. Regards Thomas
Index: symbol.c =================================================================== --- symbol.c (Revision 269635) +++ symbol.c (Arbeitskopie) @@ -1689,7 +1689,15 @@ gfc_add_subroutine (symbol_attribute *attr, const return false; attr->subroutine = 1; - return check_conflict (attr, name, where); + + /* If we are looking at a BLOCK DATA statement and we encounter a + name with a leading underscore (which must be + compiler-generated), do not check. See PR 84394. */ + + if (name && *name != '_' && gfc_current_state () != COMP_BLOCK_DATA) + return check_conflict (attr, name, where); + else + return true; }
! { dg-do run } ! PR 84394 - this used to complain about private procedures in ! BLOCK data. module mod1 implicit none type :: type1 integer :: i1 end type type1 end module module mod2 implicit none contains subroutine sub1 integer vals common /block1/ vals(5) if (any(vals /= [1, 2, 3, 4, 5])) stop 1 end subroutine end module block data blkdat use mod1 integer vals common /block1/ vals(5) data vals/1, 2, 3, 4, 5/ end block data blkdat program main use mod2, only: sub1 implicit none call sub1 end program