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; }