On Sat, Oct 31, 2020 at 2:22 AM Jan Hubicka <hubi...@ucw.cz> wrote:
>
> Hi,
> this patch moves clone_info to summary.
> Bootstrapped/regtested x86_64-linux, comitted.
>
> Honza
>
> 2020-10-31  Jan Hubicka  <hubi...@ucw.cz>
>
>         * Makefile.in: (OBJS): Add symtab-clones.o
>         (GTFILES): Add symtab-clones.h
>         * cgraph.c: Include symtab-clones.h.
>         (cgraph_edge::resolve_speculation): Fix formating
>         (cgraph_edge::redirect_call_stmt_to_callee): Update.
>         (cgraph_update_edges_for_call_stmt): Update
>         (release_function_body): Fix formating.
>         (cgraph_node::remove): Fix formating.
>         (cgraph_node::dump): Fix formating.
>         (cgraph_node::get_availability): Fix formating.
>         (cgraph_node::call_for_symbol_thunks_and_aliases): Fix formating.
>         (set_const_flag_1): Fix formating.
>         (set_pure_flag_1): Fix formating.
>         (cgraph_node::can_remove_if_no_direct_calls_p): Fix formating.
>         (collect_callers_of_node_1): Fix formating.
>         (clone_of_p): Update.
>         (cgraph_node::verify_node): Update.
>         (cgraph_c_finalize): Call clone_info::release ().
>         * cgraph.h (struct cgraph_clone_info): Move to symtab-clones.h.
>         (cgraph_node): Remove clone_info.
>         (symbol_table): Add m_clones.
>         * cgraphclones.c: Include symtab-clone.h.
>         (duplicate_thunk_for_node): Update.
>         (cgraph_node::create_clone): Update.
>         (cgraph_node::create_virtual_clone): Update.
>         (cgraph_node::find_replacement): Update.
>         (cgraph_node::materialize_clone): Update.
>         * gengtype.c (open_base_files): Include symtab-clones.h.
>         * ipa-cp.c: Include symtab-clones.h.
>         (initialize_node_lattices): Update.
>         (want_remove_some_param_p): Update.
>         (create_specialized_node): Update.
>         * ipa-fnsummary.c: Include symtab-clones.h.
>         (ipa_fn_summary_t::duplicate): Update.
>         * ipa-modref.c: Include symtab-clones.h.
>         (update_signature): Update.
>         * ipa-param-manipulation.c: Include symtab-clones.h.
>         (ipa_param_body_adjustments::common_initialization): Update.
>         * ipa-prop.c: Include symtab-clones.h.
>         (adjust_agg_replacement_values): Update.
>         (ipcp_get_parm_bits): Update.
>         (ipcp_update_bits): Update.
>         (ipcp_update_vr): Update.
>         * ipa-sra.c: Include symtab-clones.h.
>         (process_isra_node_results): Update.
>         (disable_unavailable_parameters): Update.
>         * lto-cgraph.c: Include symtab-clone.h.
>         (output_cgraph_opt_summary_p): Update.
>         (output_node_opt_summary): Update.
>         (input_node_opt_summary): Update.
>         * symtab-clones.cc: New file.
>         * symtab-clones.h: New file.
>         * tree-inline.c (expand_call_inline): Update.
>         (update_clone_info): Update.
>         (tree_function_versioning): Update.
>
> diff --git a/gcc/Makefile.in b/gcc/Makefile.in
> index 7fc03c8d946..7b94497b6f2 100644
> --- a/gcc/Makefile.in
> +++ b/gcc/Makefile.in
> @@ -1299,6 +1299,7 @@ OBJS = \
>         cfgrtl.o \
>         symtab.o \
>         symtab-thunks.o \
> +       symtab-clones.o \
>         cgraph.o \
>         cgraphbuild.o \
>         cgraphunit.o \
> @@ -2594,6 +2595,7 @@ GTFILES = $(CPPLIB_H) $(srcdir)/input.h 
> $(srcdir)/coretypes.h \
>    $(srcdir)/output.h $(srcdir)/cfgloop.h $(srcdir)/cfg.h 
> $(srcdir)/profile-count.h \
>    $(srcdir)/cselib.h $(srcdir)/basic-block.h  $(srcdir)/ipa-ref.h 
> $(srcdir)/cgraph.h \
>    $(srcdir)/symtab-thunks.h $(srcdir)/symtab-thunks.cc \
> +  $(srcdir)/symtab-clones.h \
>    $(srcdir)/reload.h $(srcdir)/caller-save.c $(srcdir)/symtab.c \
>    $(srcdir)/alias.c $(srcdir)/bitmap.c $(srcdir)/cselib.c $(srcdir)/cgraph.c 
> \
>    $(srcdir)/ipa-prop.c $(srcdir)/ipa-cp.c $(srcdir)/ipa-utils.h \
> diff --git a/gcc/cgraph.c b/gcc/cgraph.c
> index 9129bcf12d2..9f3a7284310 100644
> --- a/gcc/cgraph.c
> +++ b/gcc/cgraph.c
> @@ -66,6 +66,7 @@ along with GCC; see the file COPYING3.  If not see
>  #include "ipa-inline.h"
>  #include "tree-nested.h"
>  #include "symtab-thunks.h"
> +#include "symtab-clones.h"
>
>  /* FIXME: Only for PROP_loops, but cgraph shouldn't have to know about this. 
>  */
>  #include "tree-pass.h"
> @@ -1236,7 +1237,7 @@ cgraph_edge::resolve_speculation (cgraph_edge *edge, 
> tree callee_decl)
>      {
>        cgraph_edge *tmp = edge;
>        if (dump_file)
> -        fprintf (dump_file, "Speculative call turned into direct call.\n");
> +       fprintf (dump_file, "Speculative call turned into direct call.\n");
>        edge = e2;
>        e2 = tmp;
>        /* FIXME:  If EDGE is inlined, we should scale up the frequencies
> @@ -1488,38 +1489,43 @@ cgraph_edge::redirect_call_stmt_to_callee 
> (cgraph_edge *e)
>           return e->call_stmt;
>         }
>      }
> -
>    if (flag_checking && decl)
>      {
>        cgraph_node *node = cgraph_node::get (decl);
> -      gcc_assert (!node || !node->clone.param_adjustments);
> +      clone_info *info = clone_info::get (node);
> +      gcc_assert (!node || !info || !info->param_adjustments);
>      }
>

Since we assert !node, we can't do clone_info::get (node) unconditionally:

diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 9f3a7284310..b3b8af30003 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -1492,7 +1492,11 @@ cgraph_edge::redirect_call_stmt_to_callee
(cgraph_edge *e)
   if (flag_checking && decl)
     {
       cgraph_node *node = cgraph_node::get (decl);
-      clone_info *info = clone_info::get (node);
+      clone_info *info;
+      if (node)
+  info = clone_info::get (node);
+      else
+  info = nullptr;
       gcc_assert (!node || !info || !info->param_adjustments);
     }


-- 
H.J.

Reply via email to