[Bug fortran/92996] ICE in gfc_conv_array_constructor_expr, at fortran/trans-expr.c:7590

anlauf at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Dec 18 19:34:00 GMT 2019


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

anlauf at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-12-18
                 CC|                            |anlauf at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from anlauf at gcc dot gnu.org ---
Funny. Setting a breakpoint in match.c, after

3086          /* Use the machinery for an initialization expression to reduce
the
3087             stop-code to a constant.  */
3088          gfc_init_expr_flag = true;
3089          gfc_reduce_init_expr (e);
3090          gfc_init_expr_flag = false;

I get for case 0 (a(:) is variable):

(gdb) p e->expr_type
$5 = EXPR_VARIABLE
(gdb) p e->rank
$6 = 1

whereas for case 1 (a(:) is parameter):

(gdb) p e->expr_type
$7 = EXPR_ARRAY
(gdb) p e->rank
$8 = 0

How can that happen?

This is the reason it later misses the part:

3107          if (e->rank != 0)
3108            {
3109              gfc_error ("STOP code at %L must be scalar", &e->where);
3110              goto cleanup;
3111            }


More information about the Gcc-bugs mailing list