https://gcc.gnu.org/g:84bf56c81627cf0dfe13a54764e71a68a0e6b4b2
commit 84bf56c81627cf0dfe13a54764e71a68a0e6b4b2 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 02a87339f953..44060f06bd0b 100644 --- a/gcc/fortran/trans-decl.cc +++ b/gcc/fortran/trans-decl.cc @@ -938,7 +938,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; @@ -994,6 +994,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 2ba3455ab6a0..09a17977f9f2 100644 --- a/gcc/fortran/trans-types.cc +++ b/gcc/fortran/trans-types.cc @@ -2958,7 +2958,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 87e722daa92c..85c61959796b 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 *);