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

--- Comment #25 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
The regression (ICE) is caused by revision r188692 (pr53642). If I apply the
following patch

--- ../_clean/gcc/fortran/trans-expr.c  2015-10-29 17:11:18.000000000 +0100
+++ gcc/fortran/trans-expr.c    2015-11-02 23:44:18.000000000 +0100
@@ -9288,7 +9354,7 @@ gfc_trans_assignment_1 (gfc_expr * expr1
      otherwise the character length of the result is not known.
      NOTE: This relies on having the exact dependence of the length type
      parameter available to the caller; gfortran saves it in the .mod files. 
*/
-  if (flag_realloc_lhs && expr2->ts.type == BT_CHARACTER &&
expr1->ts.deferred)
+  if (flag_realloc_lhs && expr2->ts.type == BT_CHARACTER && expr1->ts.deferred
&& expr2->expr_type != EXPR_VARIABLE)
     gfc_add_block_to_block (&block, &rse.pre);

   /* Nullify the allocatable components corresponding to those of the lhs

the ICEs are gone (it does not mean that the generated code is correct!) but
the test

gfortran.dg/deferred_type_param_8.f90

aborts at run time.

Reply via email to