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

Reply via email to