https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102619
anlauf at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |anlauf at gcc dot gnu.org --- Comment #5 from anlauf at gcc dot gnu.org --- The ICE occurs for both SUM and PRODUCT of SHAPE,LBOUND,UBOUND of the assumed-rank dummy. The ICE points to gfc_conv_intrinsic_arith: 4929 gfc_conv_ss_startstride (&loop); The difference between assumed-shape vs. assumed-rank argument is: (gdb) p *loop->ss->info->expr->shape->_mp_d $86 = 1 vs. (gdb) p loop->ss->info->expr->shape $88 = (mpz_t *) 0x0 Now gfc_conv_ss_startstride should be able to handle assumed-rank, but then we die here: (gdb) l 4811,4826 4811 arg = expr->value.function.actual->expr; 4812 if (arg->rank == -1) 4813 { 4814 gfc_se se; 4815 tree rank, tmp; 4816 4817 /* The rank (hence the return value's shape) is unknown, 4818 we have to retrieve it. */ 4819 gfc_init_se (&se, NULL); 4820 se.descriptor_only = 1; 4821 gfc_conv_expr (&se, arg); 4822 /* This is a bare variable, so there is no preliminary 4823 or cleanup code. */ 4824 gcc_assert (se.pre.head == NULL_TREE 4825 && se.post.head == NULL_TREE); 4826 rank = gfc_conv_descriptor_rank (se.expr);