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 *);

Reply via email to