------- Comment #14 from pault at gcc dot gnu dot org  2007-07-30 16:22 -------
To my amazement, the patch below fixes the problem and, I am pretty sure, will
complete its regtest OK.

Before posting it, I want to thoroughly check that I have understood the
problem and that the fix is valid.

Cheers

Paul

Index: /svn/trunk/gcc/fortran/resolve.c
===================================================================
*** /svn/trunk/gcc/fortran/resolve.c    (revision 127061)
--- /svn/trunk/gcc/fortran/resolve.c    (working copy)
*************** resolve_entries (gfc_namespace *ns)
*** 390,396 ****
    gfc_namespace *old_ns;
    gfc_code *c;
    gfc_symbol *proc;
!   gfc_entry_list *el;
    char name[GFC_MAX_SYMBOL_LEN + 1];
    static int master_count = 0;

--- 390,396 ----
    gfc_namespace *old_ns;
    gfc_code *c;
    gfc_symbol *proc;
!   gfc_entry_list *el, *el2;
    char name[GFC_MAX_SYMBOL_LEN + 1];
    static int master_count = 0;

*************** resolve_entries (gfc_namespace *ns)
*** 431,436 ****
--- 431,444 ----
        && ns->parent && ns->parent->proc_name->attr.flavor == FL_MODULE)
      el->sym->ns = ns;

+   /* Do the same for entries where the master is not a module
+      procedure.  These are retained in the module namespace because
+      of the module procedure declaration.  */
+   for (el2 = el->next; el2; el2 = el2->next)
+     if (el2->sym->ns->proc_name->attr.flavor == FL_MODULE
+         && el2->sym->attr.mod_proc)
+       el2->sym->ns = ns;
+
    /* Add an entry statement for it.  */
    c = gfc_get_code ();
    c->op = EXEC_ENTRY;


-- 

pault at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |pault at gcc dot gnu dot org
                   |dot org                     |
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2007-04-17 20:56:48         |2007-07-30 16:22:41
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31609

Reply via email to