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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
--- gcc/fortran/trans-decl.c.jj 2019-01-16 09:35:08.000000000 +0100
+++ gcc/fortran/trans-decl.c    2019-01-18 12:52:45.205618524 +0100
@@ -1572,13 +1572,17 @@ gfc_get_symbol_decl (gfc_symbol * sym)
          if (VAR_P (length) && DECL_FILE_SCOPE_P (length))
            {
              /* Add the string length to the same context as the symbol.  */
-             if (DECL_CONTEXT (sym->backend_decl) == current_function_decl)
-               gfc_add_decl_to_function (length);
-             else
-               gfc_add_decl_to_parent_function (length);
+             if (DECL_CONTEXT (length) == NULL_TREE)
+               {
+                 if (DECL_CONTEXT (sym->backend_decl)
+                     == current_function_decl)
+                   gfc_add_decl_to_function (length);
+                 else
+                   gfc_add_decl_to_parent_function (length);
+               }

-             gcc_assert (DECL_CONTEXT (sym->backend_decl) ==
-                           DECL_CONTEXT (length));
+             gcc_assert (DECL_CONTEXT (sym->backend_decl)
+                         == DECL_CONTEXT (length));

              gfc_defer_symbol_init (sym);
            }

fixes this.

Reply via email to