This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch, fortran] Fix PR 84394


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]