From d8f8a0b41e8cb34f205b58bea6080da4e6cfb337 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Wed, 22 Aug 2012 07:54:24 +0200 Subject: [PATCH] trans-expr.c (gfc_copy_class_to_class, [...]): Free loop and ss data. 2012-08-22 Tobias Burnus * trans-expr.c (gfc_copy_class_to_class, gfc_trans_arrayfunc_assign): Free loop and ss data. * trans-intrinsic.c (gfc_trans_arrayfunc_assign): Free ss data. From-SVN: r190586 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/trans-expr.c | 3 +++ gcc/fortran/trans-intrinsic.c | 1 + 3 files changed, 10 insertions(+) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index c4dad21000a..9fd77d7016e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2012-08-22 Tobias Burnus + + * trans-expr.c (gfc_copy_class_to_class, + gfc_trans_arrayfunc_assign): Free loop and ss data. + * trans-intrinsic.c (gfc_trans_arrayfunc_assign): Free ss data. + 2012-08-21 Tobias Burnus * parse.c (parse_contained): Include EXEC_END_PROCEDURE diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 4f7d02620ad..cfb08621219 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -533,6 +533,7 @@ gfc_copy_class_to_class (tree from, tree to, tree nelems) loop.to[0] = nelems; gfc_trans_scalarizing_loops (&loop, &loopbody); gfc_add_block_to_block (&body, &loop.pre); + gfc_cleanup_loop (&loop); tmp = gfc_finish_block (&body); } else @@ -6770,6 +6771,7 @@ gfc_trans_arrayfunc_assign (gfc_expr * expr1, gfc_expr * expr2) if (!expr2->value.function.isym) { realloc_lhs_loop_for_fcn_call (&se, &expr1->where, &ss, &loop); + gfc_cleanup_loop (&loop); ss->is_alloc_lhs = 1; } else @@ -6778,6 +6780,7 @@ gfc_trans_arrayfunc_assign (gfc_expr * expr1, gfc_expr * expr2) gfc_conv_function_expr (&se, expr2); gfc_add_block_to_block (&se.pre, &se.post); + gfc_free_ss (se.ss); return gfc_finish_block (&se.pre); } diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index fac29c7f5f6..d0aebe94774 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -1328,6 +1328,7 @@ gfc_conv_intrinsic_rank (gfc_se *se, gfc_expr *expr) argse.descriptor_only = 1; gfc_conv_expr_descriptor (&argse, expr->value.function.actual->expr, ss); + gfc_free_ss (ss); gfc_add_block_to_block (&se->pre, &argse.pre); gfc_add_block_to_block (&se->post, &argse.post); -- 2.30.2