https://gcc.gnu.org/g:6cd54a9448f0a9a2b0fdaca77dd0e257224462e3
commit 6cd54a9448f0a9a2b0fdaca77dd0e257224462e3 Author: Mikael Morin <mik...@gcc.gnu.org> Date: Thu Mar 13 22:06:57 2025 +0100 Correction régression submodule_6.f08 Diff: --- gcc/fortran/trans-decl.cc | 5 ++++- gcc/fortran/trans-types.cc | 2 +- gcc/fortran/trans.h | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/gcc/fortran/trans-decl.cc b/gcc/fortran/trans-decl.cc index 0eae493e4411..ff938b6d9b1a 100644 --- a/gcc/fortran/trans-decl.cc +++ b/gcc/fortran/trans-decl.cc @@ -929,7 +929,7 @@ gfc_defer_symbol_init (gfc_symbol * sym) an existing backend_decl is found. */ bool -gfc_get_module_backend_decl (gfc_symbol *sym) +gfc_get_module_backend_decl (gfc_symbol *sym, bool create_type_decl) { gfc_gsymbol *gsym; gfc_symbol *s; @@ -985,6 +985,9 @@ gfc_get_module_backend_decl (gfc_symbol *sym) if (gfc_fl_struct (s->attr.flavor) && !s->backend_decl) { + if (!create_type_decl) + return false; + if (s->attr.flavor == FL_UNION) s->backend_decl = gfc_get_union_type (s); else diff --git a/gcc/fortran/trans-types.cc b/gcc/fortran/trans-types.cc index 5bda7e3b5cff..f3527694e800 100644 --- a/gcc/fortran/trans-types.cc +++ b/gcc/fortran/trans-types.cc @@ -2966,7 +2966,7 @@ gfc_get_derived_type (gfc_symbol * derived, int codimen) if (derived->backend_decl == NULL && (derived->attr.use_assoc || derived->attr.used_in_submodule) && derived->module - && gfc_get_module_backend_decl (derived)) + && gfc_get_module_backend_decl (derived, false)) goto copy_derived_types; if (derived->attr.is_class) diff --git a/gcc/fortran/trans.h b/gcc/fortran/trans.h index 9144acce7342..b5aea3b406d9 100644 --- a/gcc/fortran/trans.h +++ b/gcc/fortran/trans.h @@ -661,7 +661,7 @@ void gfc_build_builtin_function_decls (void); void gfc_set_decl_location (tree, locus *); /* Get a module symbol backend_decl if possible. */ -bool gfc_get_module_backend_decl (gfc_symbol *); +bool gfc_get_module_backend_decl (gfc_symbol *, bool = true); /* Return the variable decl for a symbol. */ tree gfc_get_symbol_decl (gfc_symbol *);