https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107075

--- Comment #6 from anlauf at gcc dot gnu.org ---
I tried the following patch, which however regresses on a couple testcases:

diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc
index d9d101775f6..cfc6fc055bd 100644
--- a/gcc/fortran/resolve.cc
+++ b/gcc/fortran/resolve.cc
@@ -16349,6 +16349,16 @@ resolve_symbol (gfc_symbol *sym)

   if (sym->param_list)
     resolve_pdt (sym);
+
+  if (sym->attr.flavor == FL_VARIABLE
+      && sym->attr.save == SAVE_NONE
+      && !sym->attr.allocatable
+      && !sym->attr.pointer
+      && !sym->attr.class_pointer
+      && sym->ns->proc_name
+      && sym->ns->proc_name->attr.flavor == FL_PROGRAM
+      && sym->ns->proc_name->attr.is_main_program)
+    sym->attr.save = SAVE_IMPLICIT;
 }

Reply via email to