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).

Reply via email to