[PATCH] Fortran: fix minor front-end memleaks
Dear all, the attached patch fixes two minor front-end memleaks I saw when working on recent PRs (pr117774 is one of them) and running f951 under valgrind. Regtested on x86_64-pc-linux-gnu. OK for mainline? Thanks, Harald From d5236446302a01eb11c017862a0813fafd0b95a1 Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Tue, 26 Nov 2024 20:37:35 +0100 Subject: [PATCH] Fortran: fix minor front-end memleaks gcc/fortran/ChangeLog: * expr.cc (find_inquiry_ref): Fix memleak introduced by scanning the reference chain to find and simplify inquiry references. * symbol.cc (gfc_copy_formal_args_intr): Free formal namespace when not needed to avoid a front-end memleak. --- gcc/fortran/expr.cc | 6 +- gcc/fortran/symbol.cc | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/fortran/expr.cc b/gcc/fortran/expr.cc index 6b40e8e0aa5..a997bdae726 100644 --- a/gcc/fortran/expr.cc +++ b/gcc/fortran/expr.cc @@ -1833,6 +1833,7 @@ find_inquiry_ref (gfc_expr *p, gfc_expr **newp) { gfc_ref *ref; gfc_ref *inquiry = NULL; + gfc_ref *inquiry_head; gfc_expr *tmp; tmp = gfc_copy_expr (p); @@ -1858,6 +1859,7 @@ find_inquiry_ref (gfc_expr *p, gfc_expr **newp) return false; } + inquiry_head = inquiry; gfc_resolve_expr (tmp); /* Leave these to the backend since the type and kind is not confirmed until @@ -1930,7 +1932,7 @@ find_inquiry_ref (gfc_expr *p, gfc_expr **newp) mpc_imagref (tmp->value.complex), GFC_RND_MODE); break; } - // TODO: Fix leaking expr tmp, when simplify is done twice. + if (inquiry->next) gfc_replace_expr (tmp, *newp); } @@ -1944,10 +1946,12 @@ find_inquiry_ref (gfc_expr *p, gfc_expr **newp) } gfc_free_expr (tmp); + gfc_free_ref_list (inquiry_head); return true; cleanup: gfc_free_expr (tmp); + gfc_free_ref_list (inquiry_head); return false; } diff --git a/gcc/fortran/symbol.cc b/gcc/fortran/symbol.cc index e803cdd93c9..f13cb1883ea 100644 --- a/gcc/fortran/symbol.cc +++ b/gcc/fortran/symbol.cc @@ -4910,6 +4910,8 @@ gfc_copy_formal_args_intr (gfc_symbol *dest, gfc_intrinsic_sym *src, if (dest->formal != NULL) /* The current ns should be that for the dest proc. */ dest->formal_ns = gfc_current_ns; + else +gfc_free_namespace (gfc_current_ns); /* Restore the current namespace to what it was on entry. */ gfc_current_ns = parent_ns; } -- 2.35.3
Re: [PATCH] Fortran: fix minor front-end memleaks
Hi Harald, Looks good to me. Thanks Paul On Tue, 26 Nov 2024 at 19:51, Harald Anlauf wrote: > Dear all, > > the attached patch fixes two minor front-end memleaks I saw when working > on recent PRs (pr117774 is one of them) and running f951 under valgrind. > > Regtested on x86_64-pc-linux-gnu. OK for mainline? > > Thanks, > Harald > >
Re: [PATCH] Fortran: passing inquiry ref of complex array to assumed rank dummy [PR117774]
Am 25.11.24 um 23:33 schrieb Steve Kargl: On Mon, Nov 25, 2024 at 10:05:49PM +, Harald Anlauf wrote: Dear all, the attached patch fixes an ICE when passing an inquiry reference of a complex array to an assumed-rank dummy argument by terminating the search for the array reference before we hit the inquiry reference. (The array reference is needed for a possible descriptor update w.r.t. bounds.) Regtested on x86_64-pc-linux-gnu. OK for mainline? Looks good to me. Thanks for the review, Steve. Pushed as r15-5701-geff7e72815ada5 . What about backporting to 14-branch? If you have the time and energy, I see no reason not to fix it on 14. I've put it on my list for backports. Thanks for expanding the testcase to include array sections.
Re: [PATCH] Fortran: fix minor front-end memleaks
Am 26.11.24 um 21:09 schrieb Paul Richard Thomas: Hi Harald, Looks good to me. Thanks Paul Thanks, Paul. Pushed as r15-5701-geff7e72815ada5 . On Tue, 26 Nov 2024 at 19:51, Harald Anlauf wrote: Dear all, the attached patch fixes two minor front-end memleaks I saw when working on recent PRs (pr117774 is one of them) and running f951 under valgrind. Regtested on x86_64-pc-linux-gnu. OK for mainline? Thanks, Harald
Re: [PATCH] Fortran: fix minor front-end memleaks
Am 26.11.24 um 23:12 schrieb Harald Anlauf: Am 26.11.24 um 21:09 schrieb Paul Richard Thomas: Hi Harald, Looks good to me. Thanks Paul Thanks, Paul. Pushed as r15-5701-geff7e72815ada5 . This should have read r15-5708-g94f98f67f7271f, the testcase in the other one was used in the testing for the present one. Duh! On Tue, 26 Nov 2024 at 19:51, Harald Anlauf wrote: Dear all, the attached patch fixes two minor front-end memleaks I saw when working on recent PRs (pr117774 is one of them) and running f951 under valgrind. Regtested on x86_64-pc-linux-gnu. OK for mainline? Thanks, Harald