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

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Perhaps
  if (state == COMP_BLOCK && !got_matching_end)
    {
      parent_ns = gfc_current_ns->parent;

      nsp = &(gfc_state_stack->previous->tail->ext.block.ns);

      prev_ns = NULL;
      ns = *nsp;
      while (ns)
        {
          if (ns == gfc_current_ns)
            {
              if (prev_ns == NULL)
                *nsp = NULL;
              else
                prev_ns->sibling = ns->sibling;
            }
          prev_ns = ns;
          ns = ns->sibling;
        }

      gfc_free_namespace (gfc_current_ns);
      gfc_current_ns = parent_ns;
      gfc_state_stack = gfc_state_stack->previous;
      state = gfc_current_state ();
    }
shouldn't it instead of freeing the namespace just mark it for later
gfc_free_namespace by parse_block_construct or parse_omp_structured_block?

Reply via email to