This is the mail archive of the
mailing list for the GCC project.
Re: Remove hash from remember_with_vars
- From: "Bernhard Reutner-Fischer" <rep dot dot dot nop at gmail dot com>
- To: Richard Biener <rguenther at suse dot de>, Jan Hubicka <hubicka at ucw dot cz>, <gcc-patches at gcc dot gnu dot org>
- Date: Sat, 31 Aug 2013 21:56:24 +0200
- Subject: Re: Remove hash from remember_with_vars
- Authentication-results: sourceware.org; auth=none
- References: <20130831162022 dot GB22772 at kam dot mff dot cuni dot cz> <301dcb70-d7b5-4ad1-89fe-a20d5a78fba7 at email dot android dot com>
On 31 August 2013 19:15:46 Richard Biener <firstname.lastname@example.org> wrote:
Jan Hubicka <email@example.com> wrote:
>remember_with_vars walks trees that are read from file (now unique)
>and looks for fields that can contain pointers to vars or functions and
>if so, it records them to global hashtable for later fixup.
>This is quite wasteful, because the hash is querried many times.
>We can simply walk all fields in a tree and record the tree once
>moreover since streaming knows when tree is newly constructed, we don't
>Vectors do not allow deletable elements, but I think it makes no
>the trees are all used from decl states.
Heh, indeed a cleanup possibility I missed.
> * lot.c (tree_with_vars): Turn into vector.
> (MAYBE_REMEMBER_WITH_VARS): Change to...
> (CHECK_VAR): ... this one.
> (CHECK_NO_VAR): New macro.
> (maybe_remember_with_vars_typed): Trun to ...
> (mentions_vars_p_typed): ... this one.
> (maybe_remember_with_vars_common): Trun to ...
> (mentions_vars_p_comon): ... this one.
> (maybe_remember_with_vars_decl_minimal): Trun to ...
> (mentions_vars_p_decl_minmal): ... this one.
> (maybe_remember_with_vars_decl_common): Trun to ...
> (mentions_vars_p_decl_common): ... this one.
> (maybe_remember_with_vars_decl_with_vis): Trun to ...
> (mentions_vars_p_decl_with_vis): ... this one.
> (maybe_remember_with_vars_decl_non_common): Trun to ...
> (mentions_vars_p_decl_non_common): ... this one.
> (maybe_remember_with_vars_function): Trun to ...
> (mentions_vars_p_function): ... this one.
> (maybe_remember_with_vars_field_decl): Trun to ...
> (mentions_vars_p_field_decl): ... this one.
> (maybe_remember_with_vars_type): Trun to ...
> (mentions_vars_p_type): ... this one.
> (maybe_remember_with_vars_binfo): Trun to ...
> (mentions_vars_p_binfo): ... this one.
> (maybe_remember_with_vars_constructor): Trun to ...
> (mentions_vars_p_constructor): ... this one.
> (maybe_remember_with_vars_expr): Trun to ...
> (mentions_vars_p_expr): ... this one.
> (maybe_remember_with_vars): Trun to ...
> (mentions_vars_p): ... this one.
> (lto_read_decls): Update.
> (LTO_SET_PREVAIL): Do not call function for internal decls.
> (lto_fixup_prevailing_decls): Update to match mentions_vars_p;
> check that something was updated.
> (lto_fixup_state): Do not care about internal decls.
> (lto_fixup_decls): Update.
> (read_cgraph_and_symbols): Update.
Sent with AquaMail for Android