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

anlauf at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code

--- Comment #4 from anlauf at gcc dot gnu.org ---
(In reply to anlauf from comment #3)
>   integer, parameter :: k(*) = x(1)%a

> 
> This fails with:
> 
> pr103283-z1.f90:6:28:
> 
>     6 |   integer, parameter :: k(*) = x(1)%a
>       |                            1
> Error: Cannot initialize implied-shape array at (1) with scalar

Doing some debugging, we seem to lose the shape when simplifying the r.h.s.
near the end of expr.c::simplify_parameter_variable:

  /* Do not copy subobject refs for constant.  */
  if (e->expr_type != EXPR_CONSTANT && p->ref != NULL)
    e->ref = gfc_copy_ref (p->ref);
  t = gfc_simplify_expr (e, type);

Initially the ref looks fine, but it might be evaluated improperly.
We end up with a scalar instead of a rank-1 array.

Reply via email to