https://gcc.gnu.org/g:09f3ba2ad1cf44aae5882aa734d437dca79e6a52
commit 09f3ba2ad1cf44aae5882aa734d437dca79e6a52 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 ebf573952449..bcb2545a1a05 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 b9d374f3fcfd..9d8de30ff951 100644 --- a/gcc/fortran/trans-types.cc +++ b/gcc/fortran/trans-types.cc @@ -2969,7 +2969,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 288df7ae7d2c..f8f4d3718813 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 *);