https://gcc.gnu.org/g:3771355a32fe4f93966e8ade0da56d991bb3f9f3
commit 3771355a32fe4f93966e8ade0da56d991bb3f9f3 Author: Mikael Morin <mik...@gcc.gnu.org> Date: Tue Mar 11 15:21:14 2025 +0100 Correction dynamic_dispatch_6.f03 Diff: --- gcc/fortran/trans-types.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/fortran/trans-types.cc b/gcc/fortran/trans-types.cc index 9c765feca482..0d7bab924571 100644 --- a/gcc/fortran/trans-types.cc +++ b/gcc/fortran/trans-types.cc @@ -2871,7 +2871,11 @@ get_class_canonical_type (gfc_symbol *derived, int rank, int corank) gfc_find_symbol (class_name, ns, 0, &canonical_class); if (canonical_class) - gfc_resolve_symbol (canonical_class); + { + if (derived->module) + canonical_class->module = gfc_get_string ("%s", derived->module); + gfc_resolve_symbol (canonical_class); + } return canonical_class; } @@ -3244,7 +3248,10 @@ gfc_get_derived_type (gfc_symbol * derived, int codimen) { gfc_symbol * canonical_sym = get_class_canonical_type (derived); if (canonical_sym != nullptr) - TYPE_CANONICAL (typenode) = gfc_get_derived_type (canonical_sym, codimen); + { + tree canonical_sym_decl = gfc_get_derived_type (canonical_sym, codimen); + TYPE_CANONICAL (typenode) = TYPE_CANONICAL (canonical_sym_decl); + } gfc_component * data_comp = derived->components; gfc_symbol *orig_type = data_comp->ts.u.derived; if (orig_type->attr.extension)