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

kargl at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2022-07-05
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1
                 CC|                            |kargl at gcc dot gnu.org
           Priority|P3                          |P4

--- Comment #1 from kargl at gcc dot gnu.org ---
Instead of an assert(), simply return false to give gfortran a chance to emit
an error.

% gfcx -c a.f90
a.f90:3:4:

    3 |    integer, parameter :: b(*) = a
      |    1
Error: Unclassifiable statement at (1)
a.f90:2:29:

    2 |    integer, parameter :: a(:) = 0
      |                             1
Error: Parameter array 'a' at (1) cannot be automatic or of deferred shape

diff --git a/gcc/fortran/decl.cc b/gcc/fortran/decl.cc
index bd586e75008..cec178fc80b 100644
--- a/gcc/fortran/decl.cc
+++ b/gcc/fortran/decl.cc
@@ -2129,7 +2129,9 @@ add_init_expr_to_sym (const char *name, gfc_expr **initp,
locus *var_locus)
          /* The shape may be NULL for EXPR_ARRAY, set it.  */
          if (init->shape == NULL)
            {
-             gcc_assert (init->expr_type == EXPR_ARRAY);
+             if (init->expr_type != EXPR_ARRAY)
+               return false;
+
              init->shape = gfc_get_shape (1);
              if (!gfc_array_size (init, &init->shape[0]))
                  gfc_internal_error ("gfc_array_size failed");

Reply via email to