From 68180ebadd0ac19bbf2ce55bd0625d1d001f7d33 Mon Sep 17 00:00:00 2001 From: Mikael Morin Date: Fri, 24 Jul 2015 14:44:59 +0000 Subject: [PATCH] Fix gfortran.dg/class_to_type_4.f90 deallocation code misordering failure PR fortran/64986 gcc/fortran/ * trans-expr.c (gfc_trans_assignment_1): Put component deallocation code at the beginning of the block. From-SVN: r226162 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/trans-expr.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 47cfa072aaa..0ed6b9bb901 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2015-07-24 Mikael Morin + + PR fortran/64986 + * trans-expr.c (gfc_trans_assignment_1): Put component deallocation + code at the beginning of the block. + 2015-07-22 Mikael Morin PR fortran/61831 diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 89b4dfd3443..be6bfe2006d 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -9241,7 +9241,7 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * expr2, bool init_flag, if (scalar_to_array && dealloc) { tmp = gfc_deallocate_alloc_comp_no_caf (expr2->ts.u.derived, rse.expr, 0); - gfc_add_expr_to_block (&loop.post, tmp); + gfc_prepend_expr_to_block (&loop.post, tmp); } /* When assigning a character function result to a deferred-length variable, -- 2.30.2