diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2013-12-01 11:50:20 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2013-12-01 11:50:20 +0000 |
commit | 343ab49260fd5f88e228df6a38cb27b19fb9045f (patch) | |
tree | 43dd63f5ad4eb021cfcdbb850eef24d026c9f314 /gcc/fortran/trans-array.c | |
parent | d700518bbd5ae9a77509d8ef052f31a8c09f0438 (diff) | |
download | gcc-343ab49260fd5f88e228df6a38cb27b19fb9045f.zip gcc-343ab49260fd5f88e228df6a38cb27b19fb9045f.tar.gz gcc-343ab49260fd5f88e228df6a38cb27b19fb9045f.tar.bz2 |
re PR fortran/57354 (Wrong run-time assignment of allocatable array of derived type with allocatable component)
2013-12-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/57354
* trans-array.c (gfc_conv_resolve_dependencies): For other than
SS_SECTION, do a dependency check if the lhs is liable to be
reallocated.
2013-12-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/57354
* gfortran.dg/realloc_on_assign_23.f90 : New test
From-SVN: r205567
Diffstat (limited to 'gcc/fortran/trans-array.c')
-rw-r--r-- | gcc/fortran/trans-array.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 7e73e23..78b08d7 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -4335,10 +4335,18 @@ gfc_conv_resolve_dependencies (gfc_loopinfo * loop, gfc_ss * dest, for (ss = rss; ss != gfc_ss_terminator; ss = ss->next) { + ss_expr = ss->info->expr; + if (ss->info->type != GFC_SS_SECTION) - continue; + { + if (gfc_option.flag_realloc_lhs + && dest_expr != ss_expr + && gfc_is_reallocatable_lhs (dest_expr) + && ss_expr->rank) + nDepend = gfc_check_dependency (dest_expr, ss_expr, true); - ss_expr = ss->info->expr; + continue; + } if (dest_expr->symtree->n.sym != ss_expr->symtree->n.sym) { |