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

--- Comment #3 from janus at gcc dot gnu.org ---
I think what happens is this: After resolving the generic TBP call to the
specific one, we try to generate a polymorphic call, but that fails since the
vtab does not contain an entry for the non-overridable TBP.

A simple workaround is to do what had already been proposed for PR78443, namely
generate a vtab entry for each TBP, no matter if it's overridable or not:


Index: gcc/fortran/class.c
===================================================================
--- gcc/fortran/class.c (revision 242725)
+++ gcc/fortran/class.c (working copy)
@@ -751,9 +751,6 @@
 {
   gfc_component *c;

-  if (tb->non_overridable && !tb->overridden)
-    return;
-
   c = gfc_find_component (vtype, name, true, true, NULL);

   if (c == NULL)


That seems to work well and makes both comment #2 and comment #0 compile and
run without error.

However, a better fix would be to generate a non-polymorphic call after
resolving the generic, just as in the case where no generics TBPs are involved.

Reply via email to