https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117730

--- Comment #7 from Paul Thomas <pault at gcc dot gnu.org> ---
(In reply to anlauf from comment #6)
> I looked at the fortran dump, and also at the verbose asm, comparing
> with and w/o non_overridable.
....snip....
> Could that be related to child_reset being invoked, although it should not?

I had come to a similar conclusion and so instrumented class.cc(add_proc_comp).
As a result, the following fix emerged and is regtesting as I write:

diff --git a/gcc/fortran/class.cc b/gcc/fortran/class.cc
index fc709fec322..388891a2fd5 100644
--- a/gcc/fortran/class.cc
+++ b/gcc/fortran/class.cc
@@ -886,11 +886,12 @@ add_proc_comp (gfc_symbol *vtype, const char *name,
gfc_typebound_proc *tb)
 {
   gfc_component *c;

-  if (tb->non_overridable && !tb->overridden)
-    return;

   c = gfc_find_component (vtype, name, true, true, NULL);

+  if (tb->non_overridable && !tb->overridden && c)
+    return;
+
   if (c == NULL)
     {
       /* Add procedure component.  */

Reply via email to