From: Jeff Law <law@redhat.com>
To: Jan Hubicka <hubicka@ucw.cz>,
Richard Biener <richard.guenther@gmail.com>
Cc: Richard Biener <rguenther@suse.de>,
GCC Patches <gcc-patches@gcc.gnu.org>
Subject: Re: [C++ patch] Re: Free more of CFG in release_function_body
Date: Sun, 29 Nov 2020 18:24:29 -0700 [thread overview]
Message-ID: <7604078b-b572-571f-896e-7d4d0c0e9bfa@redhat.com> (raw)
In-Reply-To: <20201127132622.GB78170@kam.mff.cuni.cz>
On 11/27/20 6:26 AM, Jan Hubicka wrote:
>>> On Wed, Nov 25, 2020 at 3:11 PM Jan Hubicka <hubicka@ucw.cz> wrote:
>>>>> On Tue, 24 Nov 2020, Jan Hubicka wrote:
>>>>>
>>>>>> Hi,
>>>>>> at the end of processing function body we loop over basic blocks and
>>>>>> free all edges while we do not free the rest. I think this is leftover
>>>>>> from time eges was not garbage collected and we was not using ggc_free.
>>>>>> It makes more sense to free all associated structures (which is
>>>>>> importnat for WPA memory footprint).
>>>>>>
>>>>>> Bootstrapped/regtested x86_64-linux, OK?
>>>>> OK.
>>>> Unforutnately the patch does not surive LTO bootstrap. The problem is
>>>> that we keep DECL_INITIAL that points to blocks and blocks points to
>>>> var_decls and these points to SSA_NAMES that points to statements and
>>>> those points to basic blocks.
>>> VAR_DECLs point to SSA_NAMEs? It's the other way around. We for sure
>>> free SSA_NAMEs (well, maybe not explicitely with ggc_free).
>> I am going to debug this more carefully now. I think it was VAR_DECL
>> with variadic type pointing to SSA_NAME. Should be easy to reduct with
>> gcac compiler.
> Hi,
> it turns out that the pointers to statements leaks through saved scopes
> in C++ FE. Scopes seems to point to internal blocks of functions even
> after we finish their compiling.
>
> This patch adds code to free pointers. I tried to clear saved_blocks
> but it breaks since C++ finalization uses them, but it does not look
> into previous class levels.
>
> Patch lto-bootstraps/regtestes x86_64-linux with all languages. OK?
>
> Honza
>
> * cfg.c (free_block): Call ggc_free on BB itself.
I'll ACK this bit. The C++ team should own the rest, while it looks
reasonable to me, there may be some reason I'm not aware of that they're
keeping that stuff around.
Jeff
next prev parent reply other threads:[~2020-11-30 1:24 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-24 15:16 Jan Hubicka
2020-11-24 15:50 ` Richard Biener
2020-11-25 14:08 ` Jan Hubicka
2020-11-25 14:28 ` Richard Biener
2020-11-25 14:30 ` Jan Hubicka
2020-11-25 14:32 ` Richard Biener
2020-11-27 13:26 ` [C++ patch] " Jan Hubicka
2020-11-30 1:24 ` Jeff Law [this message]
2020-11-30 22:28 ` Jason Merrill
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7604078b-b572-571f-896e-7d4d0c0e9bfa@redhat.com \
--to=law@redhat.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=hubicka@ucw.cz \
--cc=rguenther@suse.de \
--cc=richard.guenther@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).