http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52059
Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2012-01-30 CC| |burnus at gcc dot gnu.org Ever Confirmed|0 |1 --- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-01-30 23:03:28 UTC --- In gfc_conv_variable, it fails at the assert: 1183 gcc_assert (ss_info->expr == expr); Here, "expr" is the variable "b" while "ss_info->expr" is a BT_REAL constant. If one replaces "b" by "1.0_8", one has the same issue (except that than both values are constants.) And without "y" argument, it fails for: 6919 && rse.ss == gfc_ss_terminator); One has rse.ss->info->type = GFC_SS_SCALAR and rse.ss->info->expr->expr_type == EXPR_CONSTANT. It works if one undoes the change to trans-expr.c, i.e. http://gcc.gnu.org/viewcvs/trunk/gcc/fortran/trans-expr.c?r1=180906&r2=180905&pathrev=180906 * * * Side note: real(kind=8) :: a(99) real(kind=8), dimension((y-x)) :: bar a = foo (bar(0,35), ... The a(99) should be a(35) as "foo(bar()..." returns a array of dimension(35-0).