diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2019-02-23 13:18:47 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2019-02-23 13:18:47 +0000 |
commit | 524cee402e974b7e8e6e8e7ca6af189360c99526 (patch) | |
tree | 4471140166a54834c38631e3414dea4112f86f3d /gcc/fortran/trans-expr.c | |
parent | c280838969d504e909e1f1f4e19642e91fab982f (diff) | |
download | gcc-524cee402e974b7e8e6e8e7ca6af189360c99526.zip gcc-524cee402e974b7e8e6e8e7ca6af189360c99526.tar.gz gcc-524cee402e974b7e8e6e8e7ca6af189360c99526.tar.bz2 |
re PR fortran/88117 (ICE in gimplify_var_or_parm_decl, at gimplify.c:2697)
2019-02-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/88117
* resolve.c (deferred_op_assign): Return if the lhs expression
has the pointer attribute.
* trans-expr.c (gfc_trans_assignment_1): Do not fix the string
length if the lhs expression has the pointer attribute.
2019-02-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/88117
* gfortran.dg/deferred_character_32.f90 : New test
From-SVN: r269157
Diffstat (limited to 'gcc/fortran/trans-expr.c')
-rw-r--r-- | gcc/fortran/trans-expr.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index cff3d7c..a865cd6 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -10579,7 +10579,9 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * expr2, bool init_flag, string_length = gfc_evaluate_now (rse.string_length, &rse.pre); else if (expr2->ts.type == BT_CHARACTER) { - if (expr1->ts.deferred && gfc_check_dependency (expr1, expr2, true)) + if (expr1->ts.deferred + && gfc_expr_attr (expr1).allocatable + && gfc_check_dependency (expr1, expr2, true)) rse.string_length = gfc_evaluate_now (rse.string_length, &rse.pre); string_length = rse.string_length; } |