https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121743
--- Comment #2 from Gilles Gouaillardet <gilles.gouaillardet at gmail dot com>
---
FWIW, the inline patch below does the trick.
I honestly have no idea whether this is a correct fix or not.
diff --git a/gcc/fortran/trans-decl.cc b/gcc/fortran/trans-decl.cc
index b077cee86a3..fb57c6c6f44 100644
--- a/gcc/fortran/trans-decl.cc
+++ b/gcc/fortran/trans-decl.cc
@@ -2520,6 +2520,8 @@ build_function_decl (gfc_symbol * sym, bool global)
/* Allow only one nesting level. Allow public declarations. */
gcc_assert (current_function_decl == NULL_TREE
|| DECL_FILE_SCOPE_P (current_function_decl)
+ || (TREE_CODE (DECL_CONTEXT (current_function_decl))
+ == FUNCTION_DECL)
|| (TREE_CODE (DECL_CONTEXT (current_function_decl))
== NAMESPACE_DECL));