http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60359
janus at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2014-02-28 CC| |janus at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |janus at gcc dot gnu.org Summary|Assembler messages symbol |[OOP] symbol |`__io_MOD___copy_character_ |`__io_MOD___copy_character_ |1' is already defined |1' is already defined Ever confirmed|0 |1 --- Comment #4 from janus at gcc dot gnu.org --- This is due to a small bug in find_intrinsic_vtab. Patch: Index: gcc/fortran/class.c =================================================================== --- gcc/fortran/class.c (revision 208224) +++ gcc/fortran/class.c (working copy) @@ -2532,17 +2532,22 @@ find_intrinsic_vtab (gfc_typespec *ts) c->tb = XCNEW (gfc_typebound_proc); c->tb->ppc = 1; - /* Check to see if copy function already exists. Note - that this is only used for characters of different - lengths. */ - contained = ns->contained; - for (; contained; contained = contained->sibling) - if (contained->proc_name - && strcmp (name, contained->proc_name->name) == 0) - { - copy = contained->proc_name; - goto got_char_copy; - } + if (ts->type != BT_CHARACTER) + sprintf (name, "__copy_%s", tname); + else + { + /* __copy is always the same for characters. + Check to see if copy function already exists. */ + sprintf (name, "__copy_character_%d", ts->kind); + contained = ns->contained; + for (; contained; contained = contained->sibling) + if (contained->proc_name + && strcmp (name, contained->proc_name->name) == 0) + { + copy = contained->proc_name; + goto got_char_copy; + } + } /* Set up namespace. */ sub_ns = gfc_get_namespace (ns, 0); @@ -2550,11 +2555,6 @@ find_intrinsic_vtab (gfc_typespec *ts) ns->contained = sub_ns; sub_ns->resolved = 1; /* Set up procedure symbol. */ - if (ts->type != BT_CHARACTER) - sprintf (name, "__copy_%s", tname); - else - /* __copy is always the same for characters. */ - sprintf (name, "__copy_character_%d", ts->kind); gfc_get_symbol (name, sub_ns, ©); sub_ns->proc_name = copy; copy->attr.flavor = FL_PROCEDURE;