On Tue, 3 Dec 2019, Jan Hubicka wrote:

> Hi,
> input_functions ends with building virtual SSA which is unnecesary
> excercise when function is only loaded to be inlined, compared by
> ipa-icf or its profile merged.
> 
> This patch moves the SSA update later before we start working on the
> function body.
> 
> lto-bootstrapped/regtested x86_64-linux, OK?

OK I guess, but please put the update_ssa call _after_
gimple_register_cfg_hooks () and obstrack register, right before
IPA transform execution in ::expand?



> Honza
> 
>       * cgraph.c: Inlcude tree-into-ssa.h
>       (cgraph_node::get_body): Update SSA.
>       * cgraphunit.c (cgraph_node::expand): Likewise.
>       * lto-streamer-in.c (input_function): Do not update SSA.
> Index: cgraph.c
> ===================================================================
> --- cgraph.c  (revision 278904)
> +++ cgraph.c  (working copy)
> @@ -62,6 +62,7 @@ along with GCC; see the file COPYING3.
>  #include "stringpool.h"
>  #include "attribs.h"
>  #include "selftest.h"
> +#include "tree-into-ssa.h"
>  
>  /* FIXME: Only for PROP_loops, but cgraph shouldn't have to know about this. 
>  */
>  #include "tree-pass.h"
> @@ -3599,6 +3605,8 @@ cgraph_node::get_body (void)
>        set_dump_file (NULL);
>  
>        push_cfun (DECL_STRUCT_FUNCTION (decl));
> +
> +      update_ssa (TODO_update_ssa_only_virtuals);
>        execute_all_ipa_transforms (true);
>        cgraph_edge::rebuild_edges ();
>        free_dominance_info (CDI_DOMINATORS);
> Index: cgraphunit.c
> ===================================================================
> --- cgraphunit.c      (revision 278904)
> +++ cgraphunit.c      (working copy)
> @@ -2268,6 +2268,7 @@ cgraph_node::expand (void)
>  
>    gcc_assert (DECL_STRUCT_FUNCTION (decl));
>    push_cfun (DECL_STRUCT_FUNCTION (decl));
> +  update_ssa (TODO_update_ssa_only_virtuals);
>    init_function_start (decl);
>  
>    gimple_register_cfg_hooks ();
> Index: lto-streamer-in.c
> ===================================================================
> --- lto-streamer-in.c (revision 278904)
> +++ lto-streamer-in.c (working copy)
> @@ -1223,7 +1223,6 @@ input_function (tree fn_decl, class data
>    fixup_call_stmt_edges (node, stmts);
>    execute_all_ipa_stmt_fixups (node, stmts);
>  
> -  update_ssa (TODO_update_ssa_only_virtuals);
>    free_dominance_info (CDI_DOMINATORS);
>    free_dominance_info (CDI_POST_DOMINATORS);
>    free (stmts);
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)

Reply via email to