Hi all, I'd like to submit this patch. It release the ipa cp transformation summary after functions being expanded. This is to fix the compiler when used with libgccjit on subsequent compilations (every new compilation should have a clean transformation summary).
Bootstrap on arm64 and X86-64. Bests Andrea gcc/ChangeLog 2019-??-?? Andrea Corallo <andrea.cora...@arm.com> * cgraphunit.c (expand_all_functions): Release ipcp_transformation_sum when finished. * ipa-prop.c (ipcp_free_transformation_sum): New function. * ipa-prop.h (ipcp_free_transformation_sum): Add declaration.
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index cb08efe..0251fa4 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -2342,6 +2342,7 @@ expand_all_functions (void) profiled_func_count, expanded_func_count); symtab->process_new_functions (); + ipcp_free_transformation_sum (); free_gimplify_stack (); free (order); diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h index 30948fb..0ff8085 100644 --- a/gcc/ipa-prop.h +++ b/gcc/ipa-prop.h @@ -561,6 +561,7 @@ struct GTY(()) ipcp_transformation void ipa_set_node_agg_value_chain (struct cgraph_node *node, struct ipa_agg_replacement_value *aggvals); void ipcp_transformation_initialize (void); +void ipcp_free_transformation_sum (void); /* ipa_edge_args stores information related to a callsite and particularly its arguments. It can be accessed by the IPA_EDGE_REF macro. */ diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c index 2f2b070..158dbe7 100644 --- a/gcc/ipa-prop.c +++ b/gcc/ipa-prop.c @@ -3758,6 +3758,18 @@ ipcp_transformation_initialize (void) ipcp_transformation_sum = ipcp_transformation_t::create_ggc (symtab); } +/* Release the IPA CP transformation summary. */ + +void +ipcp_free_transformation_sum (void) +{ + if (!ipcp_transformation_sum) + return; + + ipcp_transformation_sum->release (); + ipcp_transformation_sum = NULL; +} + /* Set the aggregate replacements of NODE to be AGGVALS. */ void