From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26906 invoked by alias); 22 Aug 2012 05:57:15 -0000 Received: (qmail 26888 invoked by uid 22791); 22 Aug 2012 05:57:14 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,RCVD_IN_HOSTKARMA_NO X-Spam-Check-By: sourceware.org Received: from mx02.qsc.de (HELO mx02.qsc.de) (213.148.130.14) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 22 Aug 2012 05:56:26 +0000 Received: from [192.168.178.22] (port-92-204-67-8.dynamic.qsc.de [92.204.67.8]) by mx02.qsc.de (Postfix) with ESMTP id 6A4762798A; Wed, 22 Aug 2012 07:56:24 +0200 (CEST) Message-ID: <50347487.2060102@net-b.de> Date: Wed, 22 Aug 2012 05:57:00 -0000 From: Tobias Burnus User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120713 Thunderbird/14.0 MIME-Version: 1.0 To: gcc patches , gfortran Subject: [Patch, Fortran, committed] Free loop and gfc_ss data Content-Type: multipart/mixed; boundary="------------060805060105030607040505" Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2012-08/txt/msg01469.txt.bz2 This is a multi-part message in MIME format. --------------060805060105030607040505 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Content-length: 373 Committed as Rev. 190586 after successful regtesting. That's the version I also had attached to http://gcc.gnu.org/ml/fortran/2012-08/msg00118.html; as written there: "The patch is incomplete, e.g. "argss" of gfc_conv_procedure_call is not (or not always) freed. Ditto for rss of gfc_trans_assignment_1; ditto for lss and rss of gfc_trans_pointer_assignment." Tobias --------------060805060105030607040505 Content-Type: text/x-patch; name="committed.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="committed.diff" Content-length: 1997 Index: gcc/fortran/trans-expr.c =================================================================== --- gcc/fortran/trans-expr.c (Revision 190585) +++ gcc/fortran/trans-expr.c (Arbeitskopie) @@ -533,6 +533,7 @@ gfc_copy_class_to_class (tree from, tree to, tree 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_ 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_ 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); } Index: gcc/fortran/trans-intrinsic.c =================================================================== --- gcc/fortran/trans-intrinsic.c (Revision 190585) +++ gcc/fortran/trans-intrinsic.c (Arbeitskopie) @@ -1328,6 +1328,7 @@ gfc_conv_intrinsic_rank (gfc_se *se, gfc_expr *exp 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); Index: gcc/fortran/ChangeLog =================================================================== --- gcc/fortran/ChangeLog (Revision 190585) +++ gcc/fortran/ChangeLog (Arbeitskopie) @@ -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 --------------060805060105030607040505--